Gabriel Genellina wrote: > At Saturday 25/11/2006 00:14, wo_shi_big_stomach wrote: > >> > The filter should be applied to walkfiles. Something like this: >> > >> > dir = path(/home/wsbs/Maildir) >> > for f in filter(os.path.isfile, dir.walkfiles('*')): >> > # >> > # test: >> > # print f >> >> Thanks, this way f will print the full pathname/filename. But f already >> does that using Jason Orendorff's path module: >> >> dir = path('/home/wsbs/Maildir') >> for f in dir.walkfiles('*'): >> print f > > The filter is used to exclude directories. fileinput can't handle > directories.
??? Both routines above produce identical output -- full path/filenames. Neither prints just a directory name. > >> At this point I believe the error has to do with fileinput, not the path >> or os.path modules. >> >> If I give fileinput.input() a hardcoded path/filename in place of 'f' >> the program runs. However the program will not accept either f or 'f' as >> an argument to fileinput.input(). > > Tried with (f,) ? > Notice that *this* error is not the same as your previous error. File "p2.py", line 23, in ? for line in fileinput.input(f,): File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/fileinput.py", line 231, in next line = self.readline() File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/fileinput.py", line 320, in readline self._file = open(self._filename, "r") This looks similar to before -- fileinput.input() still isn't operating on the input. Again, I'm looking 1) walk through all files in a directory tree and 2) using fileinput, evaluate and possibly edit the files. The current version of the program is below. thanks! /wsbs # start of program import fileinput import os import re import string import sys from path import path # p2.py - 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 # recurse dirs dir = path('/home/wsbs/Maildir') #for f in dir.walkfiles('*'): for f in filter(os.path.isfile, dir.walkfiles('*')): # # test: this will print the full path/filename of each file # print f # # open file, search, change if necessary, write backup for line in fileinput.input(f,): # just print 2nd and subsequent lines if not fileinput.isfirstline(): print line.rstrip('\n') # check first line only elif fileinput.isfirstline(): if not re.search('^From ',line): print line.rstrip('\n') fileinput.close() # end of program -- http://mail.python.org/mailman/listinfo/python-list