我有一个没有功能的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()
答案 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}}。我不会在这里提供一个不支持这种方法的例子。