我正在编写一个脚本,它有一个for循环,从文件夹中的每个“data_I.csv”文件中提取变量列表,然后将该列表作为新行附加到单个输出.csv'文件。在
我的目标是定义一次文件头,然后将数据附加到'输出.csv'容器文件,因此它将作为标准度量的积压工作。 第一次运行脚本时,它将添加文件夹中的所有文件。下一次运行它时,我希望它只附加此后添加的文件。我原以为这样做的一种方法是检查重复项,但是到目前为止,我找到的代码只搜索连续的重复项。在
你有什么建议吗?在
到目前为止我是如何做到的:
import csv, os
# Find csv files
for csvFilename in os.listdir('.'):
if not csvFilename.endswith('.csv'):
continue
# Read in csv file and choose certain cells
csvRows = []
csvFileObj = open(csvFilename)
csvData = csv.reader(csvFileObj,delimiter=' ',skipinitialspace='True')
csvLines = list(csvData)
cellID = csvLines[4][3]
# Read in several variables...
csvRows = [cellID]
csvFileObj.close()
resultFile = open("Output.csv", 'a') #open in 'append' modus
wr = csv.writer(resultFile)
wr.writerows([csvRows])
csvFileObj.close()
resultFile.close()
这是mgc回答后的最后一个脚本:
^{pr2}$
您可以跟踪已处理的每个文件的名称。如果这个日志文件不需要人类可读,可以使用pickle。在脚本开始时,可以执行以下操作:
然后,可以添加一个条件以避免以前处理的文件:
^{pr2}$然后,在处理文件时,可以执行以下操作:
并在脚本末尾跟踪变量(以便下次使用):
(不过,对于您的问题还有其他选择,例如,您可以在文件被处理后稍微更改其名称,例如将扩展名从
.csv
更改为.csv_
或将已处理的文件移动到子文件夹中,等等。)另外,在您的问题中的示例中,我不认为您需要在
for
循环的每次迭代中打开(和关闭)输出文件。在循环之前打开一次,写下你要写的,然后在你离开循环后关闭它。在相关问题 更多 >
编程相关推荐