combining the path and fileinput modules

Rob Wolfe rw at smsnet.pl
Thu Nov 23 09:15:36 EST 2006


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.

> 	#
> 	# 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

-- 
HTH,
Rob




More information about the Python-list mailing list