Xah Lee wrote: > © # -*- coding: utf-8 -*- > © # Python > © > © import sys > © > © nn = len(sys.argv) > © > © if not nn==5: > © print "error: %s search_text replace_text in_file out_file" % > sys.argv[0] > © else: > © stext = sys.argv[1] > © rtext = sys.argv[2] > © input = open(sys.argv[3]) > © output = open(sys.argv[4],'w')
I guess there is no way to check if the file opened fine? What if the filesystem or file is locked for this user/session. Pretty puny language if it cannot tell you that it cannot do what you tell it to. > © > © for s in input: > © output.write(s.replace(stext,rtext)) > © output.close() > © input.close() Same for the close. Is there no way check a good close? > > ------------------------- > save this code as find_replace.py > run it like this: > python find_replace.py findtext replacetext in_file out_file > > the sys.argv is from sys. sys.argv[0] is the program's name itself. > > note the idiom > "for variable_name in file_object" > > note that since this code reads each > line in turn, so huge file is of no-problemo > > the code is based from Python > Cookbook of Alex Martelli & David > Ascher, page 121 > > in Python terminal, type help() then > 'FILES' and or 'sys' > for reference. > > try to modify this file for your > needs. > -------------------------------------- > In perl, similar code can be achieved. > the following code illustrates. > > if (scalar @ARGV != 4) {die "Wrong arg! Unix BNF: $0 <sstr> <rstr> > <file id1> <file id2>\n"} > $stext=$ARGV[0]; > $rtext=$ARGV[1]; > $infile = $ARGV[2]; > $outfile = $ARGV[3]; > open(F1, "<$infile") or die "Perl fucked up. Reason: $!"; > open(F2, ">$outfile") or die "Perl fucked up. Reason: $!"; In 7 years of perl programming, I have never seen an open error that had anything to do with perl processing. Normally, if I get an error, the file does not exist, or has permissions set so that the current user/session is not allowed to open the file. > while ($line = <F1>) { > chomp($line); > $line =~ s/$stext/$rtext/g; > print F2 "$line\n"; > } > close(F1) or die "Perl fucked up. Reason: $!"; > close(F2) or die "Perl fucked up. Reason: $!"; Same here. Never seen Perl fuck up on closing a file. Usually something in the OS or file system that does it. > Xah > [EMAIL PROTECTED] > http://xahlee.org/PageTwo_dir/more.html -- http://mail.python.org/mailman/listinfo/python-list