#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()
прочитать все в строку напрямую. Вот документация pathlib3. 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()