#python
#python
Вопрос:
Мне нужно пройти через ряд идентичных каталогов и объединить два файла .txt из каждого в один файл.
Я пытался использовать список (включая частичный список, всего ~ 1000 каталогов), но Python продолжает интерпретировать мою переменную list как текст в пути к файлу.
import os
for subject in ['100307', '100408', '101107']:
os.chdir("/Users/me/Desktop/SubjPerformance/(subject)")
filenames = ['0bk_nlr.txt', '2bk_nlr.txt']
with open('all_bk_nlr', 'w') as outfile:
for fname in filenames:
with open(fname) as infile:
outfile.write(infile.read())
Ошибка, которую я продолжаю получать, это:
FileNotFoundError: [Errno 2] No such file or directory: '/Users/me/Desktop/SubjPerformance/(subject)'
Очевидно, что (subject) не является частью пути к файлу. Я хочу, чтобы он брал элемент из моего списка, но вместо этого интерпретирует то, что я хочу, чтобы было переменной списка, как текст.
Я уверен, что это также можно было бы сделать с помощью подстановочного знака, который проходит через каждый подкаталог в / SubjPerformance, но я не знаю, как построить этот цикл.
Спасибо за вашу помощь и извините за невежественный вопрос — я исследователь нейробиологии, а не разработчик!
Комментарии:
1. Python не будет интерпретировать текст как переменную. Вы можете объединить переменную со своей строкой различными способами в зависимости от версии python, которую вы используете:
"string" variable
илиf'string{variable}'
или'string{}'.format(variable)
Ответ №1:
Вы используете неправильный синтаксис, используйте
"/Users/me/Desktop/SubjPerformance/%s" % subject
или
"/Users/me/Desktop/SubjPerformance/{}".format(subject)
вместо этого.
Ответ №2:
Чтобы использовать переменную внутри строки, вы можете использовать "/Users/me/Desktop/SubjPerformance/%s" % subject
. Вы можете узнать больше о форматировании строк здесь.