Я тестирую разные способы поиска файлов. Этот код из Python Essential Ref, Дэвид Бизли работает в Python интерактивно. Я адаптировал его для запуска из CL - чтобы увидеть, смогу ли он, и он не работает
Я запустил функцию 'findall' в интерактивном режиме при тестовом поиске, и она работала нормально. Когда я пытаюсь запустить его из CLI, например, python -m find_files 'path', он не работает. Я использовал print (), чтобы попытаться отследить, куда попадает интерпретатор. Он получает sys.argv [1] правильно и входит в функцию findall (). Но это ничего не производит?
import os
import os.path
import glob
import fnmatch
import sys
def findall(pattern, topdir='.'):
for dir, dirname, files in os.walk(topdir):
for name in files:
if fnmatch.fnmatch(name, pattern):
yield os.path.join(dir, name)
if __name__ == "__main__":
if len(sys.argv) > 1:
tin = []
for file_found in findall(sys.argv[1]):
tin.append(file_found)
else:
print('Nothing found')
else:
print('Insufficient arguments')
print(tin)
Я ожидал, что он распечатает file_found. Первоначально я печатал каждый найденный путь, один за другим. Затем я попытался добавить в список, а затем распечатать список. В любом случае, это не работает для меня.