python循环写入csv文件_关于python:循环遍历多个csv文件,仅将某些列复制到新文件...

我在一个文件夹中有许多.csv文件(1.csv、2.csv、3.csv等),我需要循环它们。对于每个现有文件,输出应该是一个对应的新文件,但每个文件只应包含2列。

以下是csv文件的示例:

1

2

3

4004,444.444.444.444,448,11:16 PDT,11-24-15

004,444.444.444.444,107,09:55 PDT,11-25-15

004,444.444.444.444,235,09:45 PDT,11-26-15

004,444.444.444.444,241,11:00 PDT,11-27-15

下面是我希望输出的外观:

1

2

3

4448,11-24-15

107,11-25-15

235,11-26-15

241,11-27-15

下面是我使用python实现这一点的工作尝试:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18import csv

import os

import glob

path = '/csvs/'

for infile in glob.glob( os.path.join(path, '*csv') ):

inputfile = open(infile, 'r')

output = os.rename(inputfile +".out", 'w')

#Extracts the important columns from the .csv into a new file

with open(infile, 'r') as source:

readr = csv.reader(source)

with open(output,"w") as result:

writr = csv.writer(result)

for r in readr:

writr.writerow((r[4], r[2]))

仅使用这段代码的后半部分,我就能够通过在代码中指定输入文件来获得所需的输出。然而,这个python脚本将是一个更大的bash脚本的一小部分,它将(希望)完全自动化。

如何调整此脚本的输入以循环访问每个文件并创建一个只包含两个指定列的新文件?

如果有什么需要我澄清的,请告诉我。

这个文件和我循环访问的文件位于同一个文件夹中。

你的问题是什么?

inputfile文件是您打开的一个文件,但您正在执行-

1os.rename(inputfile +".out", 'w')

这不起作用,您试图使用+运算符添加字符串和打开的文件。我甚至不知道你为什么需要那条线,甚至那条线——inputfile = open(infile, 'r')。您正在with语句中再次打开文件。

另一个问题

您将路径指定为-path = '/csvs/',在根目录下不太可能有'csvs'目录。您可能想使用其他相对目录,所以应该使用相对目录。

你可以这么做-

1

2

3

4

5

6

7

8

9path = 'csvs/'

for infile in glob.glob( os.path.join(path, '*csv') ):

output = infile + '.out'

with open(infile, 'r') as source:

readr = csv.reader(source)

with open(output,"w") as result:

writr = csv.writer(result)

for r in readr:

writr.writerow((r[4], r[2]))

你可以使用熊猫图书馆。它提供了一些处理csv文件的功能。read_csv将为您读取csv文件,并为您提供一个数据帧对象。访问此链接以获取有关如何从熊猫数据帧写入csv文件的示例。此外,网上还有很多教程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值