simple file flow question with csv.reader
Tim Chase
python.list at tim.thechases.com
Wed Nov 2 19:06:39 EDT 2011
On 11/02/11 16:13, Matt wrote:
> Hi All,
>
> I am trying to do a really simple file operation, yet, it befuddles me...
>
> I have a few hundred .csv files, and to each file, I want to manipulate the data, then save back to the original file. The code below will open up the files, and do the proper manipulations-- but I can't seem to save the files after the manipulation..
>
> How can I save the files-- or do I need to try something else maybe with split, join, etc..
>
>
> import os
> import csv
> for filename in os.listdir("/home/matthew/Desktop/pero.ngs/blast"):
> with open(filename, 'rw') as f:
> reader = csv.reader(f)
> for row in reader:
> print ">",row[0],row[4],"\n",row[1], "\n",">", row[2], "\n", row[3]
Your last line just prints the data to standard-out. You can
either pipe the output to a file:
python myprog.py > output.txt
or you can write them to a single output file:
out = file('output.txt', 'w')
for filename in os.listdir(...):
with open(filename, 'rw') as f:
reader = csv.reader(f)
for row in reader:
out.write(">%s%s\n%s\n>%s\n>%s\n%s" % (
row[0], row[4], row[1], row[2], row[3]))
or you can write them to output files on a per-input basis:
for filename in os.listdir(SOURCE_LOC):
with open(filename, 'r') as f:
outname = os.path.join(
DEST_LOC,
os.path.basename(filename),
)
with file(outname, 'wb') as out:
for row in reader:
out.write(">%s%s\n%s\n>%s\n>%s\n%s" % (
row[0], row[4], row[1], row[2], row[3]))
-tkc
More information about the Python-list
mailing list