Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过命令行指定列以从python中的csv文件复制列_Python_Csv - Fatal编程技术网

通过命令行指定列以从python中的csv文件复制列

通过命令行指定列以从python中的csv文件复制列,python,csv,Python,Csv,我正在尝试将多个列从一个csv文件复制到另一个csv文件。列由通过命令行参数发送的参数指定。我让代码工作,以便它复制代码中静态设置的列,但要复制哪些列的决定需要是动态的。我的意思是,用户可以通过命令行指定他们想要的任何列,并且只复制这些列。我当前的代码如下,它复制了csv文件的前两列。我需要以某种方式迭代cmdargs并复制列表cmdargs中指定的行。有什么想法吗 import sys import csv import os #Get rid of first argument (file

我正在尝试将多个列从一个csv文件复制到另一个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]]))

像这样的事情应该可以做到:

在rdr中的行的

outlist=[]
for index in  cmdargs:
  outlist.append(row[index])
wtr.writerow(outlist)
或者,如果您更喜欢短版本:

wtr.writerow([row[i] for i in cmdargs])

这正是我想要的。谢谢