我正在尝试编写一个脚本,根据字典值打开文件。对于每个键/值,它都会根据该值的名称打开一个文件,并将该文件分配给该值的名称(我认为这是错误的)。到目前为止,它用正确的名称为我打开文件,这样就可以了。但是,我认为我分配给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”对象没有属性“close” 在f.close()行上。在
编辑:它现在可以像我所希望的那样工作,使用以下代码:(为了清晰起见,我现在还包括了“here I do something”部分)
^{pr2}$当我试图编写脚本的下一部分时,我遇到了另一个问题,但这可能是另一个问题的原因,因为它给出了一个与此部分无关的windows错误。谢谢大家的帮助!在
如果我了解你,你想从字典中动态创建一些变量,这样你就可以把它们分配给打开的文件,是吗???!!!!在
我建议用另一本这样的词典来做:
您现在可以从字典中访问打开的文件,如下所示:
^{pr2}$对你来说,后面的代码是这样做的:
也许您想将元组附加到
filelist
中,这样名称就与file对象相关联了我要提醒大家不要在第一个循环中重用“value”,以清楚起见,以及将来可能引入的bug。在
但是,你发布的代码实际上是有效的,所以很明显还有其他的事情我们无法在这里诊断出来。您需要做的是检查
filelist
的内容,然后再尝试关闭其中的文件句柄。这可能会让你找到答案。在相关问题 更多 >
编程相关推荐