编码在哪里出错(输出:0)?

时间:2015-12-29 14:00:19

标签: python python-2.7

!在/ usr / bin中/ Python的

导入子流程

def shell():

 return subprocess.call(["bash","test.sh"])

file = raw_input("输入目录的绝对路径: - ")

file_obj =开放(" test.sh"' WB +&#39)

file_obj.write(" echo ls %s"%file)

file_obj.closed

print shell()

1 个答案:

答案 0 :(得分:1)

您的功能不会返回任何内容。您拨打subprocess.call但未退回。您正在尝试打印该函数的返回值,但没有任何内容可以让您获得None

例如

def foo():
    return 5

def bar():
    #do nothing

print foo()
print bar()

将输出

5
None

因为foo()返回5而bar()没有返回任何内容。

修改

你似乎想要输出命令,我假设。如果您阅读subprocess here的文档,则会看到subprocess.call返回退出代码,而不是输出。

你想要的是subprocess.check_output()。请参阅here (on the same page)

  

使用参数运行命令并将其输出作为字节字符串返回。

     

如果返回码非零,则会引发CalledProcessErrorCalledProcessError对象将包含returncode属性中的返回代码以及output属性中的任何输出。

文档示例:

>>> subprocess.check_output(["echo", "Hello World!"])
'Hello World!\n'

>>> subprocess.check_output("exit 1", shell=True)
Traceback (most recent call last):
   ...
subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1