我有数百个csv文件的文件夹,每个文件中有一行包含国家名称。我想通过所有的文件循环,选择与国家名称“FIN”行,并从选定的行创建新的csv文件
我已经走了这么远:
import csv
import glob
for filename in glob.glob('\directory\*.csv'):
with open(filename, 'r') as i, open('\directory_for_new_files\fin_{}'.format(filename), 'w') as o:
r = csv.reader(i, delimiter=',')
w = csv.writer(o, delimiter=',')
for row in r:
if 'FIN' in row[3] or 'flag' in row[3] :
w.writerow(row)
"fin_{}'.format(filename)"
部分似乎是问题所在,因为当我仅用一个名称(如“testfile.csv”)替换它时,脚本工作正常,但问题是它总是覆盖同一个文件。那么如何让脚本为每个输入文件创建一个新的输出文件呢
错误消息:
with open(r'D:\Koko Suomen ihmispaineet\Ihmispaineet_26_10_2018\Global fishing watch\fishing_effort\daily_csvs_finland\fin_{}'.format(filename), 'w') as o:
IOError: [Errno 22] invalid mode ('w') or filename: 'D:\Koko Suomen ihmispaineet\Ihmispaineet_26_10_2018\Global fishing watch\fishing_effort\daily_csvs_finland\fin_D:\Koko Suomen ihmispaineet\Ihmispaineet_26_10_2018\Global fishing watch\fishing_effort\daily_csvs\2012-01-01.csv'
3个问题:
错误的斜杠:您需要使用
r"\somedir\somefi.le"
或"\\somedir\\somefi.le"
/somedir/somefi.le
当writing the csv
glob返回带有路径的文件名-您只需要文件名
固定示例:
输出:
相关问题 更多 >
编程相关推荐