python - 将 bash 脚本的结果捕获到 Python 程序中
问题描述
我有兴趣使用在名称下的 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)。谢谢。
解决方案
[Python 3.Docs]:子进程。check_output (args, *, stdin=None, stderr=None, shell=False, cwd=None, encoding=None, errors=None, universal_newlines=None, timeout=None, text=None)是你需要的(最简单的变体)对于此任务,因为它将返回进程的stdout。
从那里,解码并拆分返回值(字符串)以获取单独的行。
示例(从命令行完成所有操作):
[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', '']
推荐阅读
- mysql - 检索具有最大值mysql的行
- c# - 是否可以在同一个 Viewbag 变量上传递多个值?
- corda - Corda 可调度状态导致流测试挂起
- javascript - 等待量角器与页面同步时出错:“angularJS 可测试性和 Angular 可测试性都未定义
- ubuntu - Caffe 编译错误 - 虚拟框中的 Ubuntu 18.04.4 Live Server
- python-3.x - 从点生成二维网格文件
- mysql - 获取 MYSQL 中当年一月的记录
- chef-infra - 如何找到将食谱上传到厨师服务器的作者?
- python-3.x - Python groupby在插入符号之间返回单个值
- docker - 用于重复测试入站电子邮件的 Docker IMAP 服务器?反向邮筒?