【问题标题】:how to translate a cmd line to a os.system line?如何将 cmd 行转换为 os.system 行?
【发布时间】:2017-01-06 23:09:36
【问题描述】:

我曾经使用以下命令通过 cmd 行运行一个名为 vina 的程序:

"\Program Files (x86)\The Scripps Research Institute\Vina\vina.exe" --config conf.txt --log log.txt

因此,程序运行配置文件并输出带有结果的日志文件。我正在使用 os.system 模块在 python 中运行程序。但是,我无法像在 cmd 中那样分配配置文件或日志文件。我在 python 中尝试过这样的事情:

os.system('C:/Program Files (x86)/The Scripps Research Institute/Vina/vina.exe' --config conf.txt --log log.txt)

程序打开很快然后关闭,可能是因为它没有运行配置文件。我还尝试将配置放入一个字符串,如下所示(我省略了日志内容,直到我让配置工作):

os.system('C:/Program Files (x86)/The Scripps Research Institute/Vina/vina.exe', '--config conf.txt')

在这种情况下,我得到了错误:

TypeError: system() 最多接受 1 个参数(给定 2 个)

关于如何像我在 cmd 中那样在 python 行中指定配置文件和日志文件输出有什么想法吗?

【问题讨论】:

  • 如何使用 os.path 并提取路径,然后将其转换为字符串以与操作系统一起使用。系统
  • 试试subprocess.call(['C:/Program Files (x86)/The Scripps Research Institute/Vina/vina.exe', '--config', os.path.normpath('C:/absolute/path/to/conf.txt'), '--log', 'log.txt'])。这可能会尝试在工作目录中创建日志文件,这可能是错误的。在这种情况下,传递日志文件的绝对路径,通过tempfile 模块在适当的地方创建它,例如用户的%TEMP% 目录。

标签: python windows cmd os.system configuration-files


【解决方案1】:

复制命令行命令的正确语法是

os.system('"C:/Program Files (x86)/The Scripps Research Institute/Vina/vina.exe" --config conf.txt --log log.txt')

如果这不起作用,请尝试为 conf.txt 和 log.txt 指定完整路径

【讨论】:

  • 完美运行。谢谢!
【解决方案2】:

os.system(r'"C:/Program Files (x86)/The Scripps Research Institute/Vina/vina.exe" --config conf.txt --log log.txt')

【讨论】:

    猜你喜欢
    • 2018-04-30
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 2013-06-12
    • 2011-12-21
    相关资源
    最近更新 更多