【问题标题】:Python subprocess error: Popen, call, run "No such file or directory: errorPython子进程错误:Popen,调用,运行“没有这样的文件或目录:错误
【发布时间】:2019-03-08 01:35:59
【问题描述】:

我遇到了子流程模块的问题。我正在尝试在 Python 中运行终端命令,该命令在终端中运行良好。命令是:

hrun SomeAction LogFile

我尝试了多种选择,包括 call()、run()、check_output() 和 Popen()。无论我使用哪种方法,我都会收到错误:

FileNotFoundError: [Errno 2] No such file or directory: 'hrun': 'hrun'

我的代码是:

    output = Popen(["hrun", "SomeAction", log_file_name], stdout=PIPE, stderr=PIPE)

其中“hrun”和“SomeAction”是字符串,log_file_name 是字符串变量。 我发现了其他 SO 问题,并且大多数(如果不是全部)都通过 shell=True (我不想要)解决,或者因为问题是由于字符串而不是列表参数引起的。

谢谢!

【问题讨论】:

  • 这意味着hrun 命令不在您的PATH 环境变量中。

标签: python subprocess


【解决方案1】:

如果您只是想从脚本中的提示符运行命令,为什么不使用类似的东西

import os
os.system("your command")

你应该可以像这样运行它

os.system("hrun SomeAction LogFile")

【讨论】:

  • 感谢您的回复!我试过os.system(),还是不行,但至少没有报错!我得到这个输出: sh: hrun: command not found。我也得到了一个意外的输出,我假设这与找不到命令问题有关。
  • 我不将hrun 识别为标准命令,所以如果它是自定义脚本并且您的环境中的PATH 变量中缺少它?该命令在普通终端中是否有效?
  • hrun 我相信是一个 Perl 脚本。我在 Linux 上运行它,是的,它可以作为普通终端命令运行
  • @helloworld95 我会尝试在您的机器上找到 Perl 脚本并将其添加到您的 PATH 中。您可以通过脚本中的sys 模块执行此操作。或者,您可以 os.chdir() 到脚本中的该位置,它应该可以工作(我个人建议导致更改 PATH 可能会产生意想不到的后果),或者您可以按照stackoverflow.com/questions/46188012/… 之类的过程将其添加到您的 PATH
猜你喜欢
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-13
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多