如何在python文件中对bash脚本进行硬编码

时间:2016-02-22 10:29:47

标签: python bash

我正在编写一个python工具,通过subprocess进行一些处理,数据收集并最终调用bash脚本。

我的工具的棘手部分是:我使用nuitka将python文件编译为单个二进制文件。我这样做是因为我不希望我的用户添加任何功能,而且我希望我的工具变得神秘。

问题当然是如何处理bash脚本。现在,我将它们与我的nuitka-ed二进制文件一起存储。但是,由于上述原因,我不希望bash脚本易于访问。

现在,我可以看到两个选项:

  1. 我可以编译*.sh个文件并用nuitka-ed二进制文件链接它们。
  2. 我可以对*.sh个文件中的*.py个文件进行硬编码。
  3. 由于其复杂性,选项1不是一种选择。选项2略胜一筹,但就目前而言,我的最佳解决方案如下:

    我制作script.py

    """
    #!/bin/bash
    
    ls -alh /var
    echo $?
    # (...)
    """
    

    我将script.__doc__注入subprocess.Popen(['bash(...)

    还有更好的方法 - 在保持ba​​sh脚本可读性的同时实现我的目标更优雅吗?

1 个答案:

答案 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)