我正在尝试编写一个基于字典值打开文件的脚本。对于每个键/值,它会根据该值的名称打开一个文件,并将该文件分配给值的名称(我认为这里出错了)。到目前为止,它以正确的名称为我打开这些文件,因此可行。然而,我认为我分配open(file)函数的名称是错误的,因为我的函数的其余部分不再打开这些文件,并且我无法关闭它们。我的脚本 例子:Python赋值函数字典值
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()
所以问题是,我该如何分配打开(文件)功能,以正确的名称? (例如,这里是r1p1d和r2p1d)我以后如何再次调用它们?
我现在得到的错误是: AttributeError:'str'object在f.close()行上没有属性'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()
我有另外一个问题,虽然现在当我尝试编写脚本的下一部分时,但这可能是另一个问题的原因,因为它提供了与此部分无关的Windowserror。感谢所有的帮助!
`filelist`声明在哪里? – 2010-12-22 10:04:38
filelist在此之前声明,我的脚本中只有filelist = [] – Max 2010-12-22 10:06:39
不要使用`file`作为变量。它会隐藏内置类型。 – 2010-12-22 18:07:13