bash脚本的捕获结果转换为Python程序(Capture result of bash scri

2019-09-26 12:48发布

我感兴趣的使用名义在bash脚本创建一个目录列表list_of_dirs_in_bash并将其传递给我的Python通用程序列表。

所以,在我的Python脚本后做:

subprocess.call("my_bash_script.sh")

这样做:

list_of_dirs_in_python = list_of_dirs_in_bash

然后我可以在Python该列表的工作。 当然这并不难,但一切我所发现的是周围的其他方法(从Python中的bash)。 谢谢。

Answer 1:

[Python的3.Docs]:子进程。 check_output(参数,*,标准输入=无,标准错误=无,壳=假CWD =无,编码=无,错误=无,universal_newlines =无,超时=无,文本=无)是你所需要的(最简单的变体)对于这项任务,因为它会返回进程的标准输出
从那里,解码和分裂的返回值(字符串),以获得各条线。

实施例(所做的一切从命令行):

 [cfati@cfati-ubtu16x64-0:~/Work/Dev/StackOverflow]> ls a.py q049058700 q049654022 q051914879 q052090348 q053230645 q053781370 q054269984 q055357490 q056055568 q038171543 q049499683 q051073129 q052051111 q052720961 q053626481 q054243176 q054306561 q055537728 sizes_mingwi686.exe [cfati@cfati-ubtu16x64-0:~/Work/Dev/StackOverflow]> [cfati@cfati-ubtu16x64-0:~/Work/Dev/StackOverflow]> python3 -c "import subprocess;list_of_dirs_in_bash = subprocess.check_output(['ls']).decode().split('\n');print(list_of_dirs_in_bash)" ['a.py', 'q038171543', 'q049058700', 'q049499683', 'q049654022', 'q051073129', 'q051914879', 'q052051111', 'q052090348', 'q052720961', 'q053230645', 'q053626481', 'q053781370', 'q054243176', 'q054269984', 'q054306561', 'q055357490', 'q055537728', 'q056055568', 'sizes_mingwi686.exe', ''] 


文章来源: Capture result of bash script into a Python program