使用Python删除文件夹中多个csv文件中的行

时间:2019-03-20 11:25:41

标签: python csv

我想一次删除一个文件夹中多个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:]);

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

将您的问题分为小问题,一切都有更简单的解决方案:如何打开文件夹中的每个文件