Novice [].append Help

waters waters at porkless.net
Mon Mar 1 18:57:02 EST 2004


I seem to have hit a snag.

I am trying to add the list (l_local) as an item in the output list 
(l_output). "l_local" is a modified copy of the format-list "l_format", 
which will be updated by index position within the function. The problem 
occurs in the following statement block:

def create_apid_list(l_format,l_values):
     l_output = []
     for t_curr_line in l_values: # ...for each list in the values list
         l_local = l_format # ...assign blank format to local list
         l_local[0] = t_curr_line[0] # ...modify with vendor number
         l_local[1] = t_curr_line[1] # ...modify with invoice number
         # print l_local # ... for testing
         l_output.append(l_local) # ...add list as item to output list
      return l_output

...the "l_output.append(l_local)" line is not returning the expected 
result. It is correctly producing a list of lists, but they all contain 
the the same values from the last t_curr_line[0] & t_curr_line[1] 
records in the l_values list. The preceding print statement displays the 
proper values containing data from all of the lists in l_values, so I'm 
not sure what the problem is.

I would like to avoid using the extend module, as I hope to use each 
list as a "line" when written to the output files.

The complete code is listed below, it uses the delimited.py module that 
was posted on this newsgroups awhile back. Some lines may wrap.

Thanks for any help...


# thybidding.py
# Input - tab delimited input file.
# Output - pipe delimited output files formatted accordingly.

# Formats
l_apid_format = [
     " ", # 00 apid_vendor          integer
     " ", # 01 apid_invoice         char(12)
     " ", # 02 apid_seq             smallint
     " ", # 03 apid_fund            char(4)
     " ", # 04 apid_desc            char(30)
     " ", # 05 apid_bud_dist        char(1)
     " ", # 06 apid_asset_sw        char(1)
     " ", # 07 apid_3rd_party       integer
     " ", # 08 apid_1099_cd         char(1)
     " ", # 09 apid_donate_cd       char(2)
     " ", # 10 apid_taxable_sc      char(1)
     " ", # 11 apid_org             char(8)
     " ", # 12 apid_obj             char(6)
     " ", # 13 apid_project         char(5)
     " ", # 14 apid_po              char(8)
     " ", # 15 apid_ap_cntl_org     char(8)
     " ", # 16 apid_ap_cntl_obj     char(6)
     " ", # 17 apid_ap_ctl_proj     char(5)
     " ", # 18 apid_over_bud        char(1)
     " ", # 19 apid_amt             decimal(13,2)
     " ", # 20 apid_txbl_amt_sc     decimal(13,2)
     " ", # 21 apid_po_fsc_yr       smallint
     " ", # 22 apid_po_liqd         char(1)
     " ", # 23 apid_key             integer
     " ", # 24 apid_fa_inv_qty      decimal(7,1)
     " ", # 25 apid_fa_inv_pct      decimal(5,2)
     " "] # 26 apid_asset           char(15)
l_apih_format = [
     " ", # 00 apih_vendor          integer
     " ", # 01 apih_invoice         char(12)
     " ", # 02 apih_type            smallint
     " ", # 03 apih_status          char(1)
     " ", # 04 apih_remit_no        smallint
     " ", # 05 apih_batch           smallint
     " ", # 06 apih_clerk           char(8)
     " ", # 07 apih_voucher         char(8)
     " ", # 08 apih_warrant         char(8)
     " ", # 09 apih_req             char(8)
     " ", # 10 apih_po              char(8)
     " ", # 11 apih_dept            char(5)
     " ", # 12 apih_ent             char(1)
     " ", # 13 apih_desc            char(30)
     " ", # 14 apih_cash_org        char(8)
     " ", # 15 apih_cash_obj        char(6)
     " ", # 16 apih_cash_proj       char(5)
     " ", # 17 apih_warr_org        char(8)
     " ", # 18 apih_warr_obj        char(6)
     " ", # 19 apih_warr_proj       char(5)
     " ", # 20 apih_sep_check       char(1)
     " ", # 21 apih_bud_dist        char(1)
     " ", # 22 apih_comments        char(250)
     " ", # 23 apih_je_year         smallint
     " ", # 24 apih_je_per          smallint
     " ", # 25 apih_inv_date        date
     " ", # 26 apih_disc_date       date
     " ", # 27 apih_due_date        date
     " ", # 28 apih_entry_date      date
     " ", # 29 apih_check_date      date
     " ", # 30 apih_check_no        integer
     " ", # 31 apih_inv_total       decimal(13,2)
     " ", # 32 apih_discbl_amt      decimal(13,2)
     " ", # 33 apih_disc_amt        decimal(13,2)
     " ", # 34 apih_inv_net         decimal(13,2)
     " ", # 35 apih_sales_tax1      decimal(8,2)
     " ", # 36 apih_sales_tax2      decimal(8,2)
     " ", # 37 apih_alpha_sort      char(20)
     " ", # 38 apih_wire_xfer       char(8)
     " ", # 39 apih_released        char(1)
     " ", # 40 apih_not_taxbl       decimal(13,2)
     " ", # 41 apih_county_cd       char(3)
     " ", # 42 apih_category        char(1)
     " ", # 43 apih_gl_effec_date   date
     " ", # 44 apih_cash_flow_cd    char(8)
     " ", # 45 apih_nxt_approv      char(8)
     " ", # 46 apih_approv_lvl      smallint
     " ", # 47 apih_wf_aprv_err     char(1)
     " ", # 48 apih_wo              integer
     " "] # 49 apih_contract        char(10)

# Variables
s_input_file = "/input/input.dat"
s_apid_output_path = "/output/apid_output.dat"
s_apih_output_path = "/output/apih_output.dat"

# Output Files
f_apid_output = open(s_apid_output_path,'w')
f_apih_output = open(s_apih_output_path,'w')

# Modules
import delimited # ...for reading tab or space delimited files
import string # ...for list to string conversion

# Functions
def retrieve_values():
     l_output = []
     for t_curr_line in 
delimited.split_delimited(open(s_input_file,'r').read()):
         l_output.append(t_curr_line)
     return l_output

def create_apid_list(l_format,l_values):
     l_output = []
     for t_curr_line in l_values: # ...for each line in the values list
         l_local = l_format # ...assign format to list
         l_local[0] = t_curr_line[0] # ...assign vendor number
         l_local[1] = t_curr_line[1] # ...assign invoice number
	# ...many more of these will follow. snipped for brevity
         # print l_local # <-- for testing
         l_output.append(l_local)
     return l_output


def create_apih_list(l_format,l_values):
     # currently unimplemented


def delimiterize(l_input):
     # currently unimplemented


def writefile(l_input_data,f_output_file):
     for l_line in l_input_data:
         f_output_file.write(l_line)


# Calls
l_values = retrieve_values()
l_apid = create_apid_list(l_apid_format,l_values)

# Unused
# l_apih = create_apih_list(l_apih_format,l_values)
# l_apid_delimited = delimiterize(l_apid)
# l_apih_delimited = delimiterize(l_apih)
# writefile(l_apid_delimited,s_apid_output)
# writefile(l_apih_delimited,s_apih_output)



More information about the Python-list mailing list