【问题标题】:using subprocess in python across os platforms [closed]在跨操作系统平台的python中使用子进程[关闭]
【发布时间】:2020-05-11 06:41:21
【问题描述】:

我正在开发一个软件,其中包含一个使用子进程运行 bash 命令的 python 脚本。将来我可以使用 windows 运行这个特定的脚本吗?

我基本上使用三种语言:Bash、C 和 Python。

我使用 bash 命令在 python 中运行所有脚本。

cat run.sh

gcc [programName].c -o programName
./programName

或者可能只是这样做: subprocess.call(["gcc",programName])

【问题讨论】:

  • 发布您的代码。
  • bash 在做什么而 python 不能?
  • 所以基本上我在目录中有一个 bash 脚本。它最初使用 bash 运行可执行文件。其余的 bash 命令是 awk 和 sed,正如 Milosz 所说,我可以在 python 中运行
  • @user171558 它最初使用 bash 运行一个可执行文件。 你能说得更具体些吗?用 Python 做所有事情可能是你最好的选择。
  • @AMC 对此我无法正确解释。如果您阅读本文,我将不胜感激。所以我从 github 上安装了这个基因组变异检测器,并使用 make 编译它。我使用 bash:gatk HaplotypeCaller --file sequence.fastq --dbsnp dbsnp.vcf > output.txt 运行它,这给了我一个制表符分隔的输出。我首先使用 awk 处理它。然后我在 python 中进行了一些数学分析。我想在 python 中运行所有 bash 命令,包括 gatk ... 但是,我意识到这在 Windows 上是不可行的。

标签: python bash subprocess cross-platform


【解决方案1】:

我最近一直在研究这个。如果您想拥有在 Unix 和 Windows 上都可以使用的代码,我建议您使用例如尽可能使用os.removeos.rename 而不是rmmvglob.glob 而不是ls,并且只使用subprocess 来运行外部命令(请记住,它们大部分都将具有.exe 扩展时间——你可以检查os.name来决定是否包含它)。您可能还想将所有 greps、awks 或 seds 重写为 Python 函数。

关键是,即使从技术上讲,您可以在 Windows 上安装 Bash 并从控制台运行 Python 代码,但在我看来,subprocess 的代码无论如何总是在 CMD 或 PowerShell 中运行。

【讨论】:

  • 谢谢!如果我想在 Windows 上运行 python 文件,我假设我必须避免在这种特殊情况下使用 bash 编码。
  • 是的,我刚开始对这个最近的“Windows 上的 bash”承诺大肆宣传,但结果证明它不是很健壮。幸运的是,osshutilsys 有许多类似 bash 的文件操作工具,而且许多其他工具可以很容易地使用内置方法模拟,例如 str.replace()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
相关资源
最近更新 更多