[Tutor] overwriting input file

Noufal Ibrahim noufal at nibrahim.net.in
Wed Feb 25 14:26:30 CET 2009


Bala subramanian wrote:
> Hello all,
> 
> query 1) How should i overwrite the input file
> I want to open 5 files one by one, do some operation on the lines and 
> write the modified lines on the same file (overwritting). Can some 
> please tell me how to do it.

import fileinput
pat1=" R"
pat2="U5"
pat3="A3"
files = fileinput.Fileinput(sys.argv[1:], inplace = 1)
for i in files:
   if pat1 in i: print i.replace(pat1," ")
   if pat2 in i: print i.replace(pat2,"U ")
   if pat3 in i: print i.replace(pat3,"A ")
files.close()

should work for you. Check out the fileinput documentation for details 
especially the 'inplace' argument. It's untested though.

Personally speaking, I think the stdout redirection business violates 
the 'explicit is better than implicit' rule.


> query 2) How should I use wild cards to open files in python. Say I have 
> files with names *.dat  in a directory, i want the program to open every 
> file with extension .dat and do the process.

import glob
glob.glob(r"*.dat")

should do that for you.

-- 
~noufal
http://nibrahim.net.in/


More information about the Tutor mailing list