1

我正在尝试将多个列从一个 csv 文件复制到另一个。列由通过命令行参数发送的参数指定。我有代码工作,以便它复制在代码中静态设置的列,但是要复制哪些列的决定需要是动态的。我的意思是用户可以通过命令行指定他们想要的任何列,并且只会复制那些列。我当前的代码如下,它复制了 csv 文件的前两列。我需要以某种方式迭代 cmdargs 并复制列表 cmdargs 中指定的行。有任何想法吗?

import sys
import csv
import os

#Get rid of first argument (filename)
cmdargs = sys.argv[1:]

#Convert values to integers
cmdargs = list(map(int, cmdargs))   

with open(r'data.csv','rb') as source:
    rdr= csv.reader( source )
    with open('output.csv',"wb") as result:
        wtr= csv.writer( result )
        for row in rdr:
        wtr.writerow( ([row[0]], [row[1]]))
4

1 回答 1

2

像这样的东西应该可以解决问题:

for row in rdr

outlist=[]
for index in  cmdargs:
  outlist.append(row[index])
wtr.writerow(outlist)

或者如果您更喜欢简短版本:

wtr.writerow([row[i] for i in cmdargs])
于 2013-10-17T17:17:09.303 回答