Python将函数赋值给dict valu

2024-09-30 14:35:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个脚本,根据字典值打开文件。对于每个键/值,它都会根据该值的名称打开一个文件,并将该文件分配给该值的名称(我认为这是错误的)。到目前为止,它用正确的名称为我打开文件,这样就可以了。但是,我认为我分配给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错误。谢谢大家的帮助!在


Tags: 文件函数in脚本名称forclosevalue
3条回答

如果我了解你,你想从字典中动态创建一些变量,这样你就可以把它们分配给打开的文件,是吗???!!!!在

我建议用另一本这样的词典来做:

codeconv={"agt":"r1p1d", "aga":"r2p1d"}
opened_files = {}

for key, value in codeconv.items():
    file_name = "c:\Biochemistry\Pythonscripts\Splittest\split%s.txt" % value
    file=open(file_name, 'w')
    opened_files.update({key: file})

您现在可以从字典中访问打开的文件,如下所示:

^{pr2}$

对你来说,后面的代码是这样做的:

for f in opened_files.values():
    f.close()

也许您想将元组附加到filelist中,这样名称就与file对象相关联了

codeconv={"agt":"r1p1d", "aga":"r2p1d"}
for value in codeconv.values():
    f=open("c:\Biochemistry\Pythonscripts\Splittest\split"+value+".txt", 'w')
    filelist.append((value, f))

"Here I do something with the files"

for name, f in filelist:
    f.close()

我要提醒大家不要在第一个循环中重用“value”,以清楚起见,以及将来可能引入的bug。在

但是,你发布的代码实际上是有效的,所以很明显还有其他的事情我们无法在这里诊断出来。您需要做的是检查filelist的内容,然后再尝试关闭其中的文件句柄。这可能会让你找到答案。在

相关问题 更多 >