Я пытаюсь написать скрипт, который открывает файлы на основе значений словаря.Для каждого ключа / значения он открывает файл на основе имени этого значения и присваивает этот файл имени значения (я думаю, что здесь все идет не так).Пока он открывает файлы для меня, с правильными именами, так что работает.Тем не менее, я думаю, что имя, которому я назначаю функцию open (file), неверно, так как остальная часть моей функции больше не открывает файлы, и я не могу их закрыть.Пример моего сценария:
filelist=[]
codeconv={"agt":"r1p1d", "aga":"r2p1d"}
for value in codeconv.values():
value=open("c:\Biochemistry\Pythonscripts\Splittest\split"+value+".txt", 'w')
filelist.append(value)
"Here I do something with the files"
for f in filelist:
f.close()
Итак, проблема в том, как назначить функции open (file) правильное имя?(Вот, например, r1p1d и r2p1d) И как мне потом снова вызвать их?
Я получаю сейчас ошибку: AttributeError: 'str'object не имеет атрибута' close 'в строке f.close ().
РЕДАКТИРОВАТЬ: теперь он работает так, как я хочу, используя следующий код: (я также включил часть «здесь я делаю что-то» сейчас просто для ясности)
result=open("C:\\Biochemistry\\Pythonscripts\\Illuminaresults.txt", "r")
filelist=[]
codeconv={"agt":"r1p1d", "aga":"r2p1d"}
opened_files={}
for key, value in codeconv.items():
filename="c:\Biochemistry\Pythonscripts\Splittest\split"+value+".txt"
file=open(filename, 'w')
opened_files.update({key: file})
for line in result:
if line[0]==">":
lastline=line
if line[0:3] in codeconv and len(line)==64:
f=opened_files[line[0:3]]
f.write(lastline+line)
else: continue
for f in opened_files.values():
f.close()
result.close()
IОднако теперь возникает другая проблема, когда я пытаюсь написать следующую часть моего скрипта, но это, вероятно, что-то для другого вопроса, так как он дает Windowserror, не относящийся к этой части.Спасибо всем за помощь!