我在一个文件夹中有多个.csv文件(1.csv,2.csv,3.csv等),我需要遍历它们。对于每个现有文件,输出应为一个对应的NEW文件,但每个文件应仅包含2列。
这是csv文件的示例:
004,444.444.444.444,448,11:16 PDT,11-24-15
004,444.444.444.444,107,09:55 PDT,11-25-15
004,444.444.444.444,235,09:45 PDT,11-26-15
004,444.444.444.444,241,11:00 PDT,11-27-15
这是我希望输出看起来的样子:
448,11-24-15
107,11-25-15
235,11-26-15
241,11-27-15
这是我使用Python实现这一目标的尝试:
import csv
import os
import glob
path = '/csvs/'
for infile in glob.glob( os.path.join(path, '*csv') ):
inputfile = open(infile, 'r')
output = os.rename(inputfile + ".out", 'w')
#Extracts the important columns from the .csv into a new file
with open(infile, 'r') as source:
readr = csv.reader(source)
with open(output,"w") as result:
writr = csv.writer(result)
for r in readr:
writr.writerow((r[4], r[2]))
仅使用此代码的后半部分,我就可以通过在代码中指定输入文件来获得所需的输出。但是,此Python脚本只是(希望)完全自动化的更大bash脚本的一小部分。
如何调整此脚本的输入以遍历每个文件并仅用2个指定的列创建一个新文件?
请让我知道是否需要澄清。
inputfile
文件是您打开的文件,但随后您正在执行-
os.rename(inputfile + ".out", 'w')
这不起作用,您正在尝试使用+
运算符添加字符串和打开的文件。我什至不知道为什么您需要那条线甚至-号线inputfile = open(infile, 'r')
。您正在with
语句中再次打开文件。
另一个问题-
path = '/csvs/'
,则极不可能'csvs'
在根目录下有目录。您可能想使用其他相对目录,因此您应该使用相对目录。你可以做-
path = 'csvs/'
for infile in glob.glob( os.path.join(path, '*csv') ):
output = infile + '.out'
with open(infile, 'r') as source:
readr = csv.reader(source)
with open(output,"w") as result:
writr = csv.writer(result)
for r in readr:
writr.writerow((r[4], r[2]))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句