gpt4 book ai didi

python - 在不使用子进程调用的情况下将 Bash 脚本嵌入 python

转载 作者:行者123 更新时间:2023-12-01 22:40:22 25 4
gpt4 key购买 nike

我已经能够使用 subprocess将 bash 脚本嵌入到 python 中。我今天碰巧浏览了一段 python 代码,偶然发现了下面这行代码,它还将 bash 脚本嵌入到 python 中——使用类似于 docstring 的构造。

#!/bin/bash -

''''echo -n
if [[ $0 == "file" ]]; then
..
fi
'''

有人可以阐明这种方法吗?这种方法叫什么,也许还有相关的好处。我显然可以看到简单性,但我认为不仅如此。

最佳答案

这是使文件既是有效的 Python 脚本又是有效的 bash 脚本的一种有点聪明的方法。请注意,它不会导致子进程神奇地生成。相反,如果文件由 bash 求值,bash 脚本将运行,如果它由 Python 求值,bash 脚本将被忽略。

这很聪明,但一般来说可能不是一个好的软件工程实践。拥有单独的脚本通常更有意义。

举一个更具体的例子(比如说这个文件叫做“polyglot”):

''''echo hello from bash
exit
'''

print('hello from python')

正如您所注意到的,bash 将忽略初始引号,并打印“hello from bash”,然后在到达三重引号之前退出。而 Python 会将 bash 脚本视为一个字符串,并忽略它,运行下面的 Python 脚本。

$ python polyglot
hello from python
$ bash polyglot
hello from bash

但很自然地,这通常(并且更清楚地)可以重构为两个脚本,每种语言一个。

关于python - 在不使用子进程调用的情况下将 Bash 脚本嵌入 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15190055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com