【发布时间】:2017-03-17 04:31:32
【问题描述】:
我有这个 python 脚本,它调用一个 shell 脚本并处理输出。
$ cat cd-and-run.py
#!/usr/bin/env python
import sys, getopt
import subprocess
def run_mock_phantom (test_value):
aid = 'unknown'
proc = subprocess.Popen(['./mock-phanton.sh', test_value], stdout=subprocess.PIPE)
for line in proc.communicate()[0]:
print line
return aid
def main(argv):
app_id = run_mock_phantom ( 'test-one-two' )
print "app is %s" % (app_id)
if __name__ == "__main__":
main(sys.argv[1:])
这是上面脚本调用的shell脚本:
$ cat mock-phanton.sh
#!/bin/sh
appid=$1
if [ -z $appid ]
then
echo "oh man you didnt do it right ..."
exit 0
fi
echo "APP_ID=$appid"
当我运行脚本时,我得到这个输出:
$ ./cd-and-run.py
A
P
P
_
I
D
=
t
e
s
t
-
o
n
e
-
t
w
o
app is unknown
我不明白的是为什么每个字符都输出在单独的行上,而不仅仅是...
APP_ID=test-one-two
?
【问题讨论】:
-
for line in proc.communicate()[0]不会遍历行。proc.communicate()[0]是一个字符串。遍历字符串会遍历字符。 -
噢!谢谢!我什至没有看到那里的 [0]。
-
删除
[0]不会让它遍历行。 -
你的权利,我将如何迭代行?
标签: python