我是编程新手。我在一个文件夹中有数百个CSV文件,某些文件在第二列中有字母DIF。我想重写没有这些行的CSV文件。我试图为一个文件做这个,并把我的尝试放在下面。我还需要帮助让程序为我目录中的所有文件执行此操作。任何帮助,将不胜感激。
谢谢
import csv
reader=csv.reader(open("40_5.csv","r"))
for row in reader:
if row[1] == 'DIF':
csv.writer(open('40_5N.csv', 'w')).writerow(row)
答案 0 :(得分:1)
我对您的代码进行了一些更改:
import csv
import glob
import os
fns = glob.glob('*.csv')
for fn in fns:
reader=csv.reader(open(fn,"rb"))
with open (os.path.join('out', fn), 'wb') as f:
w = csv.writer(f)
for row in reader:
if not 'DIF' in row:
w.writerow(row)
glob命令生成当前目录中以.csv结尾的所有文件的列表。如果要将源目录作为程序的参数,请查看sys.argv或argparse(特别是后者对于命令行解析非常强大)。
在“w”模式下打开文件时也必须小心:这意味着截断文件,即在循环中,您将始终覆盖现有文件,最终只有一个csv行。
必须存在direcotry'out'或脚本将产生IOError。
答案 1 :(得分:0)
Most sequence types support the in or not in operators,它比测量索引位置更容易用于测试值。
for row in reader:
if not 'DIF' in row:
csv.writer(open('40_5N.csv', 'w')).writerow(row)
答案 2 :(得分:0)
如果您愿意安装numpy,您还可以使用recfromcsv或更通用的genfromtxt(genfromtxt要求您指定逗号分隔符)将csv文件读入方便的numpy数组格式,并且您可以指定哪些行和要忽略的列。可在此处找到genfromtxt的文档:
http://docs.scipy.org/doc/numpy/user/basics.io.genfromtxt.html
这里是recfromcsv:http://nullege.com/codes/search/numpy.recfromcsv?fulldoc=1