2015-06-05 48 views
-1

下面的代碼的輸出加: -如何新列(頭)爲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創建列。

任何人都可以在這裏指導我!

+0

可能重複(http://stackoverflow.com/questions/20347766/pythonically-add-header-to-a-csv-file) –

+0

你會如何填寫它? –

+0

對於命令行選項,請查看getopt。 https://docs.python.org/2/library/getopt.html – harandk

回答

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,, 
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'] 

你從命令行參數後,你可以將其添加到您的文件

的[Pythonically添加標題爲CSV文件]