我目前正在跳过使用过的数据线,但我实际上想将使用过的数据线移动到新的 csv 文件,以便我在使用过的数据和未使用过的数据之间有一个清晰的分隔线。
我目前正在使用:
data = []
with open(path_to_csv_file) as f:
reader = csv.reader(f, delimiter=',')
for line in reader:
data.append(line)
print(data)
我在寻找什么:
您可以通过读取原始数据然后不写入新的 CSV 来有效地从 CSV 中删除行。然后,用新文件替换原始文件。
如果我们从这个原始的.csv开始:
| Name | Department |
|-------|--------------|
| Alice | Finance |
| Bobby | Marketing |
| Chuck | Marketing |
| Daryl | Mailing Svcs |
我们可以有效地将营销的任何行移动到新的营销 CSV,并保留其他行,方法是:
import csv
f_mkt = open("output-marketing.csv", "w", newline="")
writer_mkt = csv.writer(f_mkt)
f_new = open("output-new.csv", "w", newline="")
writer_new = csv.writer(f_new)
f_in = open("original.csv", newline="")
reader = csv.reader(f_in)
header = next(reader)
writer_mkt.writerow(header)
writer_new.writerow(header)
for row in reader:
if row[1] == "Marketing":
writer_mkt.writerow(row)
else:
writer_new.writerow(row)
这给了我们输出营销.csv:
| Name | Department |
|-------|------------|
| Bobby | Marketing |
| Chuck | Marketing |
和输出-new.csv:
| Name | Department |
|-------|--------------|
| Alice | Finance |
| Daryl | Mailing Svcs |
如果你有一个这么简单的脚本,一旦完成读/写就退出,你不需要费心自己关闭文件,或者使用
with open(...) as x
语句:Python 将在退出时关闭所有打开的文件。程序/脚本。
一旦您对流程充满信心,您可以添加一些代码以将新内容移至原始内容:
import shutil
shutil.move("output-new.csv", "original.csv")