在Windows 2.7.2中使用subprocess.call()的问题

前端之家收集整理的这篇文章主要介绍了在Windows 2.7.2中使用subprocess.call()的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试以下内容,并发生错误.我试图通过在控制台上调用 pythonPython shell /从脚本/ Windows控制台上运行它.没有什么似乎工作总是一样的错误.
from subprocess import call
>>>pat = "d:\info2.txt"

>>> call(["type",pat])

>>>Traceback (most recent call last):
  File "<pyshell#56>",line 1,in <module>
    call(["type",pat])
  File "C:\Python27\lib\subprocess.py",line 493,in call
    return Popen(*popenargs,**kwargs).wait()
  File "C:\Python27\lib\subprocess.py",line 679,in __init__
    errread,errwrite)
  File "C:\Python27\lib\subprocess.py",line 893,in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

有人知道这里有什么问题吗?

即使没有任何争论的简单调用([“date”]]也会失败,同样的错误.

我在用着 :
Python 2.72 32位版本在Windows 7机器上.

添加shell = True到 call
>>> import subprocess
>>> subprocess.call('dir',shell=True)
0

如你所见,它给出返回码的值,而不是dir的输出.此外,它等待命令完成,这样做

>>> subprocess.call('date',shell=True)

将等待您输入新的日期.

编辑:如果要捕获输出,请使用subprocess.check_output. DOS命令类型例如打印文件内容.所以,假设你的文件info2.txt包含你的用户名,你可以这样做:

>>> import subprocess
>>> path = r'd:\info2.txt'
>>> output = subprocess.check_output(['type',path],shell=True)
>>> print output
Vinu

有关在Python中调用外部命令的所有方法,请参阅comprehensive overview to a related question,具体有关子进程的更多信息,请参见this article by Doug Hellmann.

猜你在找的Windows相关文章