在下面的示例中,
的输出打印文件
以None
形式出现。这是为什么?
topdir = 'some_directory'
exten = '.txt'
def step(ext, dirname, names):
ext = ext.lower()
for name in names:
if name.lower().endswith(ext):
return os.path.join(dirname, name)
files = os.path.walk(topdir, step, exten)
print files
请注意,程序会找到正确的文件。我使用print
代替return
对此进行了测试。只是我无法检索函数之外的信息。我希望文件是一个数组,所以我可以在程序中使用它。谢谢!
答案 0 :(得分:0)
您的step()
函数有三个参数(ext
,dirname
和names
),但是当您在os.path.walk
中使用它时,您不是给它任何 - 它作为参数而不是函数传递。尝试传递所需数量的参数,然后查看代码是否正常工作。
答案 1 :(得分:0)
好的,经过网上搜索,我觉得我有一个解决方案。 import语句在函数内部,因为我希望自我一致,以便我可以从外部调用它。但那是第二步。
如果可以改进它会很棒。但我认为它完全符合我的要求:
def file_search(dir, pattern):
import os
import fnmatch
images = [pattern]
matches = []
for root, dirnames, filenames in os.walk(dir):
for extensions in images:
for filename in fnmatch.filter(filenames, extensions):
matches.append(os.path.join(root, filename))
return matches
files = file_search('/Users/aging_gorrila/RESEARCH/python_files/', '*.py')
print files[0]
我得到以下输出:
['/Users/aging_gorrila/RESEARCH/python_files/file_search.py']