Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python运行windows shell命令_Python_Windows_Operating System_Shell - Fatal编程技术网

使用python运行windows shell命令

使用python运行windows shell命令,python,windows,operating-system,shell,Python,Windows,Operating System,Shell,我们如何使用Python与OS外壳交互? 我想通过python运行windows cmd命令。如何实现它?您将使用操作系统模块 您只需输入命令的字符串形式,返回值是windows enrivonment变量COMSPEC 例如: system(“python”)打开windows命令提示符并运行python解释器 较新的子进程。检查输出和类似命令应替换os.system。有关详细信息,请参阅。虽然我无法在Windows上测试此功能(因为我没有访问任何Windows计算机的权限),但以下功能应该可

我们如何使用Python与OS外壳交互?
我想通过python运行windows cmd命令。如何实现它?

您将使用操作系统模块

您只需输入命令的字符串形式,返回值是windows enrivonment变量COMSPEC

例如:

system(“python”)打开windows命令提示符并运行python解释器


较新的
子进程。检查输出
和类似命令应替换
os.system
。有关详细信息,请参阅。虽然我无法在Windows上测试此功能(因为我没有访问任何Windows计算机的权限),但以下功能应该可以工作:

from subprocess import check_output
check_output("dir C:", shell=True)
check\u output
返回命令的输出字符串。或者,
subprocess.call
只运行命令并返回命令的状态(如果一切正常,通常为0)

还要注意,在Python3中,字符串输出现在是
bytes
output。如果要将其更改为字符串,则需要

from subprocess import check_output
check_output("dir C:", shell=True).decode()
如有必要,请选择程序输出的编码类型。默认值为
utf-8
,通常可以正常工作,但其他标准选项不适用


还请注意,@bluescorpion在评论中说,Windows 10需要一个尾随的反斜杠,就像在
检查输出(“dir C:\\”,shell=True)
中一样。之所以需要双反斜杠,是因为
\
在python中是一个特殊字符,所以必须使用双反斜杠。(还请注意,如果字符串的最后一个字符是
\
,即使在字符串前面加上
r
也无济于事-
r“dir C:\”
是一个语法错误,尽管
r“dir C:\”
不是。)

重构@srini-beerge的答案,该答案将获得输出和返回代码

import subprocess
def run_win_cmd(cmd):
    result = []
    process = subprocess.Popen(cmd,
                               shell=True,
                               stdout=subprocess.PIPE,
                               stderr=subprocess.PIPE)
    for line in process.stdout:
        result.append(line)
    errcode = process.returncode
    for line in result:
        print(line)
    if errcode is not None:
        raise Exception('cmd %s failed, see above for details', cmd)

您可以将
子流程
包与以下代码一起使用:

import subprocess
cmdCommand = "python test.py"   #specify your cmd command
process = subprocess.Popen(cmdCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
print output

简单导入操作系统包并在下面运行命令

import os
os.system("python test.py")

相关:侧边提示:使用
alt+prtscr
仅获取活动窗口的屏幕截图谢谢你的提示。虽然文档建议使用,但我发现对于简单的任务来说,这更适合pythonic。这在Windows7中工作。谢谢它确实会在字符串末尾返回\r\n,因此您可能需要使用
[0:-2]
子字符串将其删除。为此使用
[0:-2]
会让我感到紧张。如果有人将该代码应用到非Windows上下文中,他们肯定会将明显的
dirc:
更改为
ls
或其他任何内容。但他们可能很容易忘记将
[0:-2]
更改为
[0:-1]
。我建议改为,它可以在任何平台上使用(除非您想捕获其他尾随空格),并且还可以更清楚地说明字符串更改背后的原因。@Mikw:我有一个用于部署的windows命令。只有一行命令。如何从外部python3.4脚本调用它?只需使用上面的代码,但将
dir C:
替换为任何一行代码即可。在Win 10中工作,只需稍加修改:检查输出(“dir C:\\”,shell=True)
import os
os.system("python test.py")