Просто добавьте split()
после read()
функции, как показано ниже:
file_names = os.popen('find dir -name "*%s*"' % criteria).read().split()
Дело в том, что read
функция возвращает необработанную строку из вывода, скажем, как показано ниже:
>>> os.popen('find . -name "*%s*"' % criteria).read()
'./pymp-0kz_4tay\n./pymp-4zfymo3o\n./pymp-k79d3tvz\n./pymp-wq9g900h\n./pymp-v0jvlbzm\n./pymp-lc69tv22\n./pymp-3sqjot2q\n./pymp-fsfv6c3t\n./pymp-
где критерии pymp
в моем случае.Таким образом, из вывода ясно, что я должен разделить вывод на \n
, что делается методом split('\n')
.
Пример вывода
>>> file_names = os.popen('find . -name "*%s*"' % criteria).read().split('\n')
>>>
>>>
>>> for file in file_names: print(file)
...
./pymp-0kz_4tay
./pymp-4zfymo3o
./pymp-k79d3tvz
./pymp-wq9g900h