Python 从os.popen拆分结果

Python 从os.popen拆分结果,python,linux,Python,Linux,我正在使用python3.6自动查找计算机中的某些文件: import os criteria = 'something' file_names = os.popen('find dir -name "*%s*"' % criteria).read() for file_name in file_names: #do something pass 问题是,通过执行.read(),所有文件名(包括某些条件)都会连接到一个字符串中。 如何获得文件名列表作为输出,以便在“for”循环中进

我正在使用python3.6自动查找计算机中的某些文件:

import os
criteria = 'something'
file_names = os.popen('find dir -name "*%s*"' % criteria).read()
for file_name in file_names:
   #do something
   pass
问题是,通过执行.read(),所有文件名(包括某些条件)都会连接到一个字符串中。 如何获得文件名列表作为输出,以便在“for”循环中进行迭代?
非常感谢

在一般情况下,您希望拆分字符串。 最简单的方法是使用Python字符串的内置
.split()
方法。 例如:

有关更多详细信息,请参见仅在
read()
函数之后添加
split()
,如下所示:

file_names = os.popen('find dir -name "*%s*"' % criteria).read().split()
>>> 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-
问题是
read
函数从输出返回原始字符串,如下所示:

file_names = os.popen('find dir -name "*%s*"' % criteria).read().split()
>>> 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

可能是重复的谢谢。它与文件_names=os.popen('find dir-name“%s”'%criteria).read().split('\n')[-1]#-1)一起工作,因为在末尾有一个我不需要的'\n'