我想一次删除一个文件夹中多个csv文件的顶行和底行。然后删除第二行。我的代码可以很好地处理一个文件,但是我要处理数千个文件,因此我无法指定每个文件名。我该如何修改才能使其正常工作?
#Remove top and bottom lines from all files
lines = open('My/local/Drive/*.csv').readlines()
open('My/local/Drive/*.csv', 'w').writelines(lines[2:-4]);
#Remove 2nd line from all files
lines = []
with open('My/local/Drive/*.csv', 'r') as f:
lines = f.readlines()
with open('My/local/Drive/*.csv', 'w') as f:
f.writelines(lines[:1] + lines[2:]);
答案 0 :(得分:1)
>>>运行此文件之前,请备份文件<<<< / em>
您可以使用以下代码,在其中根据需要定义路径。
import glob
path='.'
for filename in glob.iglob(path+'/*.csv'):
with open(filename, 'r') as f:
lines = f.read().split("\n")
f.close()
if len(lines) >= 7:
lines = lines[2:-5]
lines = lines[:1] + lines[2:]
o = open(filename, 'w')
for line in lines:
o.write(line+'\n')
o.close()
在我的目标文件夹中(2个csv文件):
$ ls *.csv
input1.csv input2.csv
文件1:
to delete1
to delete2
ID;TAG;GROUP
todelete;B00;AB0
niub12617500;B01;AB4
niub16371500;B01;AB3
todelete;B00;AB0
todelete;B00;AB0
todelete;B00;AB0
todelete;B00;AB0
文件2:
to delete1
to delete2
ID;TAG;GROUP
todelete;B00;AB0
niub12677500;B00;AB2
niub16377500;B01;AB0
todelete;B00;AB0
todelete;B00;AB0
todelete;B00;AB0
执行后:
$ cat input1.csv
ID;TAG;GROUP
niub12617500;B01;AB4
niub16371500;B01;AB3
$ cat input2.csv
ID;TAG;GROUP
niub12677500;B00;AB2
niub16377500;B01;AB0
答案 1 :(得分:0)
好吧,您可以尝试列出目录中的所有文件(在这里拥有一个包含所有 .csv 文件的文件夹是一个不错的选择!)。 这将列出您所有文件:
import os
for filename in os.listdir(os.getcwd()):
或者您也可以列出 .csv 文件!
import glob
for filename in glob.glob('*.txt'):
有了它,您可以做任何需要删除这些文件的事情!
如果您需要更多关于列表和操作方面的见识,请查看this!
将您的问题分为小问题,一切都有更简单的解决方案:如何打开文件夹中的每个文件