доступ к файлам с одинаковыми именами из каталогов

#python #for-loop #glob

#python #for-цикл #глобус

Вопрос:

У меня есть два каталога, которые содержат текстовые файлы с одинаковыми именами. Хотя имена файлов одинаковы, они содержат разные данные, и я хочу получить доступ к файлам с одинаковыми именами из обоих каталогов одновременно и хочет выполнить некоторые вычисления. Для целей тестирования я написал приведенный ниже код, но циклы не обращаются к файлу данных с тем же именем в time….it выбирает случайные текстовые файлы из обоих каталогов. Может кто-нибудь, пожалуйста, подсказать мне, как получить доступ к файлам с одинаковыми именами с помощью приведенного ниже кода?

примечание: мне нужно получить доступ к почти 1000 файлам

 import glob
data1=glob.glob('/home/liu/Music/datafiles1/*.txt')
data2=glob.glob('/home/liu/Music/datafiles2/*.txt')
for files in data:
    print(files)
    
    for file in data2:
        print(file)
  

Ответ №1:

Вы знаете, что имена файлов в dir2 такие же, как и в dir1 , поэтому вам не нужно перечислять оба каталога. Просто прикрепите найденное вами имя файла ко второму каталогу.

 from pathlib import Path

dir1 = Path('/home/liu/Music/datafiles1')
dir2 = Path('/home/liu/Music/datafiles2')

for filepath1 in dir1.glob('*.txt'):
    filepath2 = dir2 / filepath1.name
    print(filepath1, filepath2)
  

Комментарии:

1. я получаю сообщение об ошибке при попытке открыть файл /home/liu/Music/datafiles1/data_file_001.txt используя a = open(«filepath1″,»r»). как это можно решить … пожалуйста

2. filepath1.open() чтобы открыть файл или filepath1.read_text() прочитать все в строку напрямую. Вот документация pathlib

3. Thanks…it с ним все в порядке

Ответ №2:

Вы хотели написать:

 import glob
data1=glob.glob('/home/liu/Music/datafiles1/*.txt')
data2=glob.glob('/home/liu/Music/datafiles2/*.txt')
for files in zip(data1, data2):
    f1, f2 = files
    print(f1, f2)
  

Ваша схема вложенных циклов означает, что data2 она исчерпывается.

Комментарии:

1. позвольте мне проверить @quamrana

2. можем ли мы определить x = f1 и y = f2, чтобы мне было проще для дальнейших вычислений …. любым другим способом мы можем это сделать

3. Вы имели в виду: x, y = files ? Это ваши переменные. Назовите их по своему усмотрению.

4. ДА… если у меня есть файл, содержащий некоторую строку, можем ли мы np.loadtxt использовать ur-код

5. однако я определил x = f1 , затем я попробовал a = open(«x»,»r») b = a.readlines() a.close()