python - Pexpect 脚本为输出提供“无”
问题描述
以下脚本None
在服务器上运行时打印
#!/usr/bin/env python
import pexpect
import sys
dcommand = ('ls')
child = pexpect.spawn(dcommand)
output = child.before
print output
不知道为什么会这样 - 这是我手动运行 ls 时发生的比较 - 那里肯定有东西!
[root@dub-svrfarm27 ~]# python script.py
None
[root@dub-svrfarm27 ~]# ls
anaconda-ks.cfg auto_ovirt_st_setup.py install_time kickstart-post.log original-ks.cfg script.py
有任何想法吗?我敢肯定这很愚蠢,但什么...
解决方案
您需要期待prompt
然后从缓冲区中读取每个操作的数据,例如,
(pilenv) bash-5.0$ cat ll.py
import pexpect
import sys
dcommand = 'ls'
child = pexpect.spawn(dcommand)
child.expect(r'.*$') # my prompt ends with $, if yours ends with something else, then use that
print(child.readline())
(pilenv) bash-5.0$ python ll.py
b'agust.py\t IMG-20191213-WA0000.jpg lib l.py\r\n'
(pilenv) bash-5.0$
另请参阅代码pexpect
以了解我为个人所做的合理使用方式:)
推荐阅读
- python - 正则表达式:找到满足特定长度约束的匹配项
- angular - AgGrid 主/详细信息网格行具有不同的高度
- angular - 如何将这两个角度元素分解为单个条件角度模板
- python - AWS EC2 实例中 Python 多线程的意外行为 [更新]
- flutter - 在颤动中触发后如何在任务中添加计时器
- powerbi - Power BI DAX:每个日历月最晚日期的结转类别状态
- python - read_json 未将列显示为 datetime64[ns]
- internationalization - Birt 报告国际化使用数据源而不是资源属性文件
- python - 标题栏中带有小部件的 QDockWidget 无法折叠
- apache-spark - 如何在 Databricks 中查询 TempView