如何从命令行参数向csv文件添加新列(标题)

时间:2015-06-05 04:16:19

标签: python csv

以下代码的输出: -

import datetime
import csv
file_name='sample.txt'
with open(file_name,'rb') as f:               
    reader = csv.reader(f,delimiter=",")                                              
    #headers = reader.next()
    p=[]
    for row in reader:

        row[0] = row[0].zfill(6) 
        row[2] = row[2].zfill(6)
        row[3] = row[3].zfill(6)
        row[4] = row[4].zfill(6)
        row[1] = row[1][5:7] + "-" + row[1][8:10] + "-" + row[1][:4]
        p.append(row[:5])
        print p
with open('names.txt', 'wb') as ofile:
    writer = csv.writer(ofile)
    for row in p:
        writer.writerow(row)

如下: -

User_ID,--Date,0Num_1,0Num_2,Com_ID
000101,04-13-2015,000012,000021,001011
000102,04-03-2014,000001,000007,001002
000103,06-05-2013,000003,000004,000034
000104,12-31-2012,000004,000009,001023
000105,09-09-2011,000009,000005,000104

我想从命令行向csv文件添加一个新列。 例如 python script_name.py Dept_ID位置将为Comp_ID旁边的Dept_ID和Location创建列。

任何人都可以在这里指导我!

2 个答案:

答案 0 :(得分:2)

请参阅this post,其中包含以下内容:

header = ['User_ID','--Date','0Num_1','0Num_2','Com_ID']
writer = csv.DictWriter(outcsv, fieldnames = header)
writer.writeheader()
writer.writerows({col: row} for row, col in zip(header, p))

使用sys.argv

解析系统参数中的额外列
import sys

extra_headers = sys.argv
header.extend(sys.argv)
n = len(sys.argv)

writer = csv.DictWriter(outcsv, fieldnames = header)
writer.writeheader()

col_fill = ''
# extend p with two columns of blank data
writer.writerows({col: row_item} for row in p for row_item,col in zip(row+[col_fill]*n,header))

这里我遍历每一行,然后我创建一个字典来按顺序为每个列分配数据。注意[col_fill]*n这会创建一个相同项目的列表,这些项目等于col_fill,用于填充通过命令行参数解析的其他列。

在此示例中,命令行参数将被解析为:

$ python script_name.py Dept_ID Location

并创建:

User_ID,--Date,0Num_1,0Num_2,Com_ID,Dept_ID,Location
000101,04-13-2015,000012,000021,001011,,
000102,04-03-2014,000001,000007,001002,,
000103,06-05-2013,000003,000004,000034,,
000104,12-31-2012,000004,000009,001023,,
000105,09-09-2011,000009,000005,000104,,

答案 1 :(得分:0)

您可以使用sys.argv从命令行获取参数。

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)

$ python script_name.py Dept_ID Location

Number of arguments: 4 arguments.
Argument List: ['script_name.pyy', 'Dept_ID Locatio']

从命令行获取参数后,可以将其添加到文件中