我正在编写一个python工具,通过subprocess
进行一些处理,数据收集并最终调用bash脚本。
我的工具的棘手部分是:我使用nuitka将python文件编译为单个二进制文件。我这样做是因为我不希望我的用户添加任何功能,而且我希望我的工具变得神秘。
问题当然是如何处理bash脚本。现在,我将它们与我的nuitka-ed二进制文件一起存储。但是,由于上述原因,我不希望bash脚本易于访问。
现在,我可以看到两个选项:
*.sh
个文件并用nuitka-ed二进制文件链接它们。*.sh
个文件中的*.py
个文件进行硬编码。由于其复杂性,选项1
不是一种选择。选项2
略胜一筹,但就目前而言,我的最佳解决方案如下:
我制作script.py
:
"""
#!/bin/bash
ls -alh /var
echo $?
# (...)
"""
我将script.__doc__
注入subprocess.Popen(['bash(...)
。
还有更好的方法 - 在保持bash脚本可读性的同时实现我的目标更优雅吗?
答案 0 :(得分:0)
要在python文件中对bash-code进行硬编码,你可以这样做。
import subprocess
import StringIO
# In Python
text = "foobar"
your_bash_cmd = "echo "+text
process = subprocess.Popen([your_bash_cmd], shell=True, stdout=subprocess.PIPE)
process.wait()
your_bash_output = process.stdout.read()
# Process bash output in python
print(your_bash_output)