为什么这段代码适用于其他人,但不适用于我?

时间:2016-08-17 17:55:07

标签: python

我正在尝试从this回答运行代码。为方便起见,代码如下。

main.py

val fs = FileSystem.get(new java.net.URI("wasb://testContainer@testhdi.blob.core.windows.net/example/"), new Configuration())
val status = fs.listStatus(new Path("wasb://testContainer@testhdi.blob.core.windows.net/example/"))
status.foreach(x=> println(x.getPath)

client.py

from subprocess import Popen, PIPE

p = Popen(['py', 'client.py'], stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=True)
r = True
while r:
    r = p.stdout.readline()
    print r

OUTP:

def fn():
    for a in (0, 1, 2):
        print a
fn()

提供答案的人说这对他们有用。但是,我不能让它产生输出。我在Mac,Linux和Windows上尝试使用python 2.7。

如果这适合您,请解释为什么它不适合我。我所做的只是b'0\r\n' b'1\r\n' b'2\r\n' b'' 在两个文件所在的目录中。

编辑:“OUT:”是我应该得到的。但是,我一无所获。

1 个答案:

答案 0 :(得分:0)

如果你这样做会怎么样?

main.py

from subprocess import check_output

client_output = check_output(['python', 'client.py'])
print client_output

https://docs.python.org/2/library/subprocess.html

您应该查看Popen.communicate()方法。

也许是这样的:

main.py

from subprocess import Popen, PIPE

p = Popen(['python', 'client.py'], stdin=PIPE, stdout=PIPE, stderr=PIPE)
print p.communicate()[0]