【问题标题】:Run a script from different folder with arguments in python (like in cmd)在 python 中使用参数从不同的文件夹运行脚本(如在 cmd 中)
【发布时间】:2018-08-17 14:56:10
【问题描述】:

我想我必须使用 use os.system 或 subprocess.call,但我不知道如何使用它。

我没有编辑原始文件夹的权限。

subprocess.Popen('file.py', cwd=dirName) 给我“系统找不到指定的文件”,即使该文件明显存在

如果我输入的是 cmd,

cd directory
file.py -arg

编辑:为了清楚起见,我想使用 python 脚本运行另一个脚本

【问题讨论】:

  • 寻找一个docopt包
  • 不知道你在docopt包里找什么,真的很抱歉,请你写代码。
  • 访问 docopt.org 网站。这是一个专门为 -arg 设计的 python 包,同时从 cmd 运行 python 脚本
  • 不,我想从另一个脚本运行 python 脚本,docopt 是为了让 argparse 更容易,这不是我的问题
  • @Sergei。 docopt 与这个问题完全无关。

标签: python cmd subprocess


【解决方案1】:

由于您使用 cmd 标记了问题,我假设您使用的是 Windows。当您在 cmd 中键入文档名称时,Windows 会自动使用适当的命令,但 Python 子进程不会。所以你有两种可能的方法

  1. 使用shell=True 请求cmd 解释器执行命令:

    subprocess.Popen('file.py', cwd=dirName, shell=True)
    
  2. 显式传递 Python 解释器的路径(或路径中的名称)

    subprocess.Popen([python_path, 'file.py'], cwd=dirName, shell=True)
    

【讨论】:

    【解决方案2】:

    首先需要在windows环境下添加python。 然后你可以添加文件路径(你想在命令行上运行它的文件)。 然后您可以转到命令行页面并键入文件名并像下面的行一样使用它:

    FileName commands
    

    例如:

    pip install datetime
    

    【讨论】:

      【解决方案3】:

      很明显,您可能使用的是 python 3 而不是 python 2。否则,您可能会使用 os.system 已建议或命令。从 python 3 开始,Commands 现在已经过时了。为了让它工作,我会改用:

      statusAndOutputText = subprocess.getstatusoutput( os.path.join( dirName, 'file.py' ) )
      

      这肯定会奏效。我在 python 3 中多次使用它,它会给你 statusAndOutputText[0] 中的状态和 statusAndOutputText[1] 中的输出缓冲区,它们都非常有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-31
        • 1970-01-01
        • 1970-01-01
        • 2019-11-13
        • 1970-01-01
        • 2014-07-17
        • 1970-01-01
        相关资源
        最近更新 更多