请看下面的伪代码:
def main():
queries = ['A','B','C']
for query in queries:
filename = query + '.csv'
writer = csv.writer(open(filename, 'wt', encoding = 'utf-8'))
...
FUNCTION (query)
def FUNCTION(query):
...
writer.writerow(XXX)
我想写入多个 csv 文件,因此我使用 for 循环
生成不同的文件名,然后在另一个 def()
中写入文件
但是,这不起作用,文件将为空。
如果我尝试摆脱使用 main()
或停止 for 循环
:
writer = csv.writer(open(filename, 'wt', encoding = 'utf-8'))
...
FUNCTION (query)
def FUNCTION(query):
...
writer.writerow(XXX)
它会起作用的。
不知道为什么?任何与 for 循环
或 main()
相关的内容吗?
最佳答案
一个简单的解决方法是将文件句柄而不是名称传递给 FUNCTION。由于文件已在 main 中打开,因此您不需要/想要子例程中的名称,只需文件句柄,因此将调用更改为 FUNCTION(writer)
和定义
def FUNCTION(writer):
并使用writer.writerow(xxx)
无论您需要在子例程中流式传输输出。
注意:您将文件指针的名称从 writer
更改为至write
在你的例子中。
关于python - writer.writerow 不适用于在 for 循环中写入多个 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43567341/