【问题标题】:Execute cmd-like command in Python在 Python 中执行类似 cmd 的命令
【发布时间】:2012-08-30 16:07:41
【问题描述】:

我想编写一个 Python 代码,它可以像 cmd 一样打开一个程序,然后从文件菜单中导出一个 .txt 文件。 cmd的代码如下所示:

c:\ESG\Statsvis.exe \\192.168.100.222\c\ESG\S1-424\2012\06\29\S1-42420120629.dsf /output=C:\Users\jessica.macleod\Desktop\outfile.txt /param=RMS Amplitude

在 cmd 中,上面的行完全符合我的要求。 Python 的等价物是什么?

【问题讨论】:

    标签: python cmd executable


    【解决方案1】:

    subprocess.Popen,像这样:

    subprocess.Popen(["/bin/ls", "-l"]
    

    或者,根据您想要获得的结果(标准输出、返回码),在此模块中使用 subprocess.callsubprocess.call_check 或其他 sn-ps。

    【讨论】:

    • 嗨 defuz,我研究了这个特定的命令,但我仍然不太确定它是如何工作的。那如何调用我上面的命令?编辑:我的意思是 /output:
    • 试试这样的:["c:\\ESG\\Statsvis.exe", "\\\\192.16...29.dsf", "/output=C:\\Users\\jessica.macleod\\Desktop\\outfile.txt", "/param=RMS", "Amplitude"]
    • 我已经尝试使用 subprocess.call() 命令打开程序,但我仍然不太清楚如何告诉它执行命令。编写输出路径和我希望 Python 执行的“参数”的正确方法是什么?
    • 每个\都必须被转义(替换为\\),并且命令行必须由空格拆分为列表
    【解决方案2】:

    另一种方式是os.system()

    import os
    os.system("c:\\ESG\\Statsvis.exe \\192.16...0629.dsf /output=C:\\...\\outfile.txt ...")
    

    【讨论】:

    • 在此示例中,路径中的反斜杠将无法正确解释。
    【解决方案3】:

    如果您想获得精确的 shell/cmd 行为,请在 suprocess.Popen() 调用中将 shell 参数设置为 True。但是,从文档中:

    警告

    使用 shell=True 调用系统 shell 可能存在安全隐患,如果 结合不受信任的输入。请参阅经常使用下的警告 详细参数。

    【讨论】:

      【解决方案4】:

      如果您需要命令的输出,请使用子进程:

      import subprocess
      out = subprocess.check_output("dir c:\ /AD", shell = True)
      

      【讨论】:

        猜你喜欢
        • 2017-03-22
        • 2017-11-21
        • 1970-01-01
        • 1970-01-01
        • 2021-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多