gpt4 book ai didi

Python - 追加行的脚本;写入前检查重复项

转载 作者:行者123 更新时间:2023-12-01 04:09:23 24 4
gpt4 key购买 nike

我正在编写一个脚本,该脚本具有一个 for 循环,用于从文件夹中的每个“data_i.csv”文件中提取变量列表,然后将该列表作为新行附加到单个“output.csv”文件中。

我的目标是定义一次文件标题,然后将数据附加到“output.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 回答后的最终脚本:

import csv, os

f = open('Output.csv', 'r+')
merged_files = csv.reader(f)
merged_files = list()
for csvFilename in os.listdir('.'):
if not csvFilename.endswith('_spm.txt'):
continue
if csvFilename in merged_files:
continue

csvRows = []
csvFileObj = open(csvFilename)
csvData = csv.reader(csvFileObj,delimiter=' ',skipinitialspace='True')
csvLines = list(csvData)
waferID = csvLines[4][3]
temperature = csvLines[21][2]

csvRows = [waferID,thickness]
merged_files.append(csvRows)
csvFileObj.close()

wr = csv.writer(f)
wr.writerows(merged_files)
f.close()

最佳答案

您可以跟踪已处理的每个文件的名称。如果此日志文件不需要人类可读,您可以使用 pickle 。在脚本开始时,您可以执行以下操作:

import pickle

try:
with open('merged_log', 'rb') as f:
merged_files = pickle.load(f)
except FileNotFoundError:
merged_files = set()

然后您可以添加一个条件来避免以前处理过的文件:

if filename in merged_files: continue

然后,当您处理文件时,您可以执行以下操作:

merged_files.add(filename)

并在脚本末尾跟踪变量(以便下次使用时使用):

with open('merged_log', 'wb') as f:
pickle.dump(merged_files, f)

(但是,您的问题还有其他选择,例如,您可以在处理文件后稍微更改文件名,例如将扩展名从 .csv 更改为 .csv_ 或移动子文件夹中已处理的文件等)

此外,在您问题的示例中,我认为您不需要在 for 循环的每次迭代中打开(和关闭)输出文件。在循环之前打开它一次,写入您必须写入的内容,然后在离开循环时将其关闭。

关于Python - 追加行的脚本;写入前检查重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35161910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com