-1

The output of the following code:-

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)

is following:-

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

I want to add a new column to the csv file from command line. e.g. python script_name.py Dept_ID Location will create columns for Dept_ID and Location next to Comp_ID.

Can any one guide me here please!

3

2 Answers 2

2

see this post which suggests something like the following:

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))

to parse the extra columns from the system arguments use 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))

here I iterate through each row, I then crate a dictionary to allocate data to each column in order. Notice [col_fill]*n this creates a list of identical items equal to col_fill that will be used to fill the additional columns parsed in via command line arguments.

In this example the command line arguments would be parsed as:

$ python script_name.py Dept_ID Location

and would create:

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,,
Sign up to request clarification or add additional context in comments.

Comments

0

you can use sys.argv to get arguments from command line.

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

after you get the argument from command line, you could add it into your file

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.