combining the path and fileinput modules

wo_shi_big_stomach wo_shi_big_stomach at mac.com
Thu Nov 23 10:21:45 EST 2006


On 11/23/06 6:15 AM, Rob Wolfe wrote:
> wo_shi_big_stomach wrote:
>> Newbie to python writing a script to recurse a directory tree and delete
>> the first line of a file if it contains a given string. I get the same
>> error on a Mac running OS X 10.4.8 and FreeBSD 6.1.
>>
>> Here's the script:
>>
>> # start of program
>>
>> # p.pl - fix broken SMTP headers in email files
>> #
>> # recurses from dir and searches all subdirs
>> # for each file, evaluates whether 1st line starts with "From "
>> # for each match, program deletes line
>>
>> import fileinput
>> import os
>> import re
>> import string
>> import sys
>> from path import path
>>
>> # recurse dirs
>> dir = path(/home/wsbs/Maildir)
>> for f in dir.walkfiles('*'):
>>  	#
>> 	# test:
>> 	# print f
> 
> Are you absolutely sure that f list doesn't contain
> any path to directory, not file?
> Add this:
> 
>         f = filter(os.path.isfile, f)
> 
> and try one more time.

Sorry, no joy. Printing f then produces:

rppp
rppppp
rppppp
rpppr
rppppp
rpppP
rppppp
rppppp

which I assure you are not the filenames in this directory.

I've tried this with f and f.name. The former prints the full pathname
and filename; the latter prints just the filename. But neither works
with the fileinput.input() call below.

I get the same error with the filtered mod as before:

  File "./p", line 23, in ?
    for line in fileinput.input(f, inplace=1, backup='.bak'):

Thanks again for info on what to feed fileinput.input()



> 
>> 	#
>> 	# open file, search, change if necessary, write backup
>>  	for line in fileinput.input(f, inplace=1, backup='.bak'):
>> 		# check first line only
>> 		if fileinput.isfirstline():
>>  			if not re.search('^From ',line):
>>  				print line.rstrip('\n')
>>  		# just print all other lines
>>  		if not fileinput.isfirstline():
>>  			print line.rstrip('\n')
>>  	fileinput.close()
>> # end of program
> 




More information about the Python-list mailing list