在CSV文件中写行的功能?还是解析清单?

时间:2015-12-14 17:04:01

标签: python csv

我有一个没有功能的python脚本。此时,它接收输入file1.txt并输出一个包含计算结果的字符串,即

file1.txt 12 16.0 True

我想要运行几十个文本文件,并逐行将这些字符串写入CSV文件。

是否有人将每个输出附加到列表中,然后解析列表?这就像你应该编写一个函数来获取每个输入并将计算直接输出到CSV文件中。

如何在每次运行脚本时接收输入,例如文件名,数据结果,数据结果2,布尔结果,并使用将其写入文件 csv.writer.writerow()

import csv
import sys

f = open(sys.argv[1], 'wt')
try:
    writer = csv.writer(f)
    writer.writerow( ('Filename', 'data', 'data', 'Boolean' )
    writer.writerow( % (f, ..., ..., str(...) )
finally:
    f.close()

print open(sys.argv[1], 'rt').read()

3 个答案:

答案 0 :(得分:1)

您可以从sys.argv

获取参数列表
arg_list = sys.argv[1:]

然后在创建编写器

后创建一个循环
  f = open(sys.argv[1], 'wt') arg_list = sys.argv[1:] 
  try:
        writer = csv.writer(f)
        writer.writerow( ('Filename', 'data', 'data', 'Boolean' )
        for arg in arg_list:
          writer.writerow( % (f, ..., ..., str(...) ) # your row
  finally:
        f.close()

  print open(sys.argv[1], 'rt').read()

同时,如果你需要在csv中写一行,那么代码就是

f = open(sys.argv[1], 'wt')
try:
    writer = csv.writer(f)
    writer.writerow( ('Filename', 'data', 'data', 'Boolean' )
    writer.writerow(sys.argv[2], sys.argv[3], sys.argv[4])
finally:
    f.close()

print open(sys.argv[1], 'rt').read()

答案 1 :(得分:0)

我没有足够的声誉来发表评论。只是想澄清你是否假设从文件夹中读取。如果您是,为什么不运行循环并将结果存储到数据框/列表中,然后将其写入csv。如果这种方法适合您,请告诉我,我可以编写代码。

答案 2 :(得分:0)

我怀疑你的意思是从另一个脚本中调用已经存在的python脚本,捕获其结果并将它们推送到你的CSV中。

实际上,您应该考虑重写您的第一个Python脚本并将其功能包装到一个函数中,该函数将文件名作为参数并返回相应的结果:

def do_stuff(thefile):
    # Perform activity here
    return (a, b, c)

然后迭代您的文本文件(或使用map)并收集结果。

如果你真的想要坚持从另一个脚本调用一个脚本(三思而行!),这绝对不是你应该做的,你可以在subprocess.call()或{{进一步阅读1}}。我不会在这里提供一个不支持这种方法的例子。