2014-12-13 142 views
1

字符串数组我要模拟的以下UNIX命令:转换输出到蟒蛇

f=`find . -name "*.pdf"` 
for file in $f; do echo "$f"; done 

我有以下的Python命令:

out= subprocess.check_output(["/usr/bin/find", ".", "-name", "*.pdf"]).strip() 

但我不能访问out[0]out[1]等等。是否有可能在python中以字符串数组的形式返回输出,所以我可以遍历它们中的每一个并对它做些什么?谢谢

+1

为什么,当'os.walk()'是一个东西吗? – 2014-12-13 15:23:24

+0

这只是我想出的一个例子来说明我想要的。以另一种方式重写这个 - 我想执行一个返回输出的命令,并且我想遍历生成的输出中的每一行。所以'os.walk()'在这个用例中没有帮助。 – Bill 2014-12-13 15:25:05

回答

1

str.strip()删除字符串周围的空格。您需要str.splitlines分割线:

>>> 'a\nb'.strip() 
'a\nb' 
>>> 'a\nb\n'.splitlines() 
['a', 'b'] 

out = subprocess.check_output(["/usr/bin/find", ".", "-name", "*.pdf"]).splitlines() 
+0

太棒了!正是我所期待的。 – Bill 2014-12-13 15:29:42

+1

不,使用'strip'是不正确的,如果'find'输出一个包含换行符的文件名,'splitlines()'的使用是错误的。安全可靠的方法是使用'find -print0'并在空值上分割。这是一个常见问题。 – tripleee 2014-12-13 15:49:00

+0

@tripleee你如何分裂空值? – Bill 2014-12-13 15:50:19