【问题标题】:Run terminal script in python?在python中运行终端脚本?
【发布时间】:2020-05-27 03:00:01
【问题描述】:

我正在使用 python,我正在尝试运行位于我正在尝试的另一个文件夹中的 shell 脚本

subprocess.call(['source','../Apps/appName/run'])

其中“运行”是我编写并生成可执行文件的 shell 脚本。但它不断给出诸如

之类的错误

没有这样的文件或目录或**没有这样的文件或目录:“来源”

我也尝试了以下

subprocess.call(['source','../Apps/appName/run']) subprocess.call(['source ../Apps/appName/run']) subprocess.call(['.','../Apps/appName/run'])

我正在尝试运行脚本并让它不理会(因为我不想要任何返回值或查看 shell 脚本的输出是什么。

提前谢谢你

【问题讨论】:

  • 当您在终端中执行which source 时,它会告诉您什么?您是否尝试过在/usr/bin/source 中进站?看起来 python 没有为source 可执行文件寻找正确的位置,所以你可能不得不告诉它。
  • 我尝试将完整路径添加到源,但它仍然说没有这样的文件或目录

标签: python shell terminal subprocess popen


【解决方案1】:

source 是一个内置的 shell,它读取文件并解释当前 shell 实例中的命令。它类似于 C #include 或 Python import。您不应该使用它来运行 shell 脚本。

运行脚本的正确方法是在第一行添加一个类似#!/bin/bash 的shebang 和chmod +x yourscriptfile。然后,操作系统将认为它是一个真正的可执行文件,可以从任何上下文中稳健地执行。在 Python 中,你会这样做:

subprocess.call(['../Apps/appName/run'])

如果出于某种原因,这不是一个选项,您可以改为在文件上显式调用 bash,因为这类似于您在 bash 中并键入 source 时会发生的情况:

subprocess.call(['bash', '../Apps/appName/run'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 2012-07-07
    • 2020-04-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多