Advertisements

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)

On 15/02/2011 18:48, Mel wrote:
> 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.
>
> (untested) Try
>
> if f.find(fileBase)> -1:
>
Python is a 0-based language, so if fileBase is at the start of f then
the result is 0. If fileBase isn't in f then the result is -1.

Share This Page

Welcome to The Coding Forums!

Welcome to the Coding Forums, the place to chat about anything related to programming and coding languages.

Please join our friendly community by clicking the button below - it only takes a few seconds and is totally free. You'll be able to ask questions about coding or chat with the community and help others.
Sign up now!