I\'m having trouble opening a file (amount2.csv) making a change, saving it and closing the file.
How does one open a file edit, save and close it?
i
The
<open file 'amount2.csv', mode 'r' at 0x1004656f0>
you are seeing isn't an error, but the result of your 'print f'. To instead see the contents of your file, you would do
with open('test.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
# row is a list of strings
# use string.join to put them together
print ', '.join(row)
To append rows to your file, instead do
changes = [
['1 dozen','12'],
['1 banana','13'],
['1 dollar','elephant','heffalump'],
]
with open('test.csv', 'ab') as f:
writer = csv.writer(f)
writer.writerows(changes)
More info at Python CSV Docs
EDIT:
I misunderstood at first, you want to change all entries of '1 dozen' to '12' in your csv file. I will say first, this is easier to do without using the csv module, but here is a solution using it.
import csv
new_rows = [] # a holder for our modified rows when we make them
changes = { # a dictionary of changes to make, find 'key' substitue with 'value'
'1 dozen' : '12', # I assume both 'key' and 'value' are strings
}
with open('test.csv', 'rb') as f:
reader = csv.reader(f) # pass the file to our csv reader
for row in reader: # iterate over the rows in the file
new_row = row # at first, just copy the row
for key, value in changes.items(): # iterate over 'changes' dictionary
new_row = [ x.replace(key, value) for x in new_row ] # make the substitutions
new_rows.append(new_row) # add the modified rows
with open('test.csv', 'wb') as f:
# Overwrite the old file with the modified rows
writer = csv.writer(f)
writer.writerows(new_rows)
If you're new to programming and python the most trobulesome line is probably
new_row = [ x.replace(key, value) for x in new_row ]
but this is just a list comprehension that is effectively equivalent to
temp = []
for x in new_row:
temp.append( x.replace(key, value) )
new_row = temp
You're trying to print the file object itself, which won't do much useful. Have you looked at the documentation for the CSV module? The very first code example shows you how to use csv.reader.