file find skips first letter

Alexander Kapps alex.kapps at web.de
Tue Feb 15 19:55:42 CET 2011


On 15.02.2011 19:32, Wanderer wrote:
> I'm using code
>
>      def getFiles(self, fileBase):
>          """return a list of the filenames in a director containing a
> base word
>          """
>
>          allFiles = os.listdir(self.resultDir)
>          baseFiles = []
>          for f in allFiles:
>              if f.find(fileBase)>  0:
>                  baseFiles.append(f)
>
>          return baseFiles
>
> but the code can't find files with fileBase in it if the fileBase
> starts the filename.
>
> if the filenames are rnoise##.tif and fileBase is "rnoise" the file
> won't be found. If fileBase is "noise" the files will be found.

str.find() returns the index to the left-most occurrence or -1 if 
the substring is not found. So, if the file name starts with 
fileBase, find() return 0 which you filter out with your test 
f.find(fileBase)> 0.

Either use f.find(fileBase) >= 0 or better:

baseFiles = []
for f in allFiles:
     if fileBase in f:
         baseFiles.append(f)


HTH



More information about the Python-list mailing list