file find skips first letter

W

Wanderer

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.
 
M

Mel

Wanderer said:
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:


Mel.
 
A

Alexander Kapps

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
 
M

MRAB

Wanderer said:
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.

An alternative is:

if fileBase in f:
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top