python - writer.writerow 不适用于在 for 循环中写入多个 CSV

标签 python function program-entry-point writer

请看下面的伪代码:

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/

相关文章:

python - Keras InvalidArgumentError 未知输入节点

python - 如何在 Python 中运行上下文感知命令?

java - java中main方法中声明的变量

python - Tensorflow:没有为任何变量提供梯度

python - lambda 中的变量作用域

r - 带有来自另一个函数输入的额外参数的函数

c++ - 奇怪的功能

javascript - 从 switch 语句返回一个值

java - 从同一个类中的另一个方法调用 main 方法

java - 静态类、方法和 main()