【问题标题】:Difficulty executing a shell script from a python script难以从 python 脚本执行 shell 脚本
【发布时间】:2019-12-11 13:43:11
【问题描述】:

当我在终端中运行 shell 脚本时,它会按我的意愿工作 当我输入时在终端中:./hello.sh pdflatex 运行并且文件编译。它完美地工作。 pdflatex 创建一个 pdf 文件,一切都很好。

我在与 shell 脚本相同的目录中有一个 python 脚本。当我通过调用 shell 脚本运行该脚本时,什么也没有发生

代码不会出错

我浏览了论坛,但没有解决这个具体问题

名为 hello.sh 的 shell 脚本包含:

#! /bin/bash
pdflatex n1.tex
import subprocess
subprocess.Popen(['/bin/bash', './hello.sh'],shell=True)

我想要发生的是,当我运行这个 python 脚本时,它会执行 shell 脚本,而另一个程序 pdflatex 会创建 pdf 文档

【问题讨论】:

  • 如果你使用shell=True,那么你使用字符串'/bin/bash ./hello.sh'而不是列表。

标签: python shell scripting subprocess


【解决方案1】:

尝试以下方法:

import subprocess
subprocess.run(['/bin/bash', './hello.sh'])

或者

import subprocess
subprocess.run(['./hello.sh'])

甚至

import subprocess
subprocess.run(['pdflatex', 'n1.tex'])

【讨论】:

  • 非常感谢。我使用了您的第三个选项,但必须添加 pdflatex 的完整路径才能使其正常工作。我不知道为什么当我将它输入终端时需要添加它,它会自动工作。
  • @Jim 很高兴它对你有用。如果您认为该答案有用,您能否将答案标记为有效并投票赞成?
  • 霍金斯,我确实赞成并标记了答案。我认为,由于我是新手,因此投票已注册,但没有出现。不过谢谢
猜你喜欢
  • 2011-05-21
  • 2013-06-13
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 2019-12-29
  • 2018-02-27
  • 1970-01-01
相关资源
最近更新 更多