我是一名Java&正在学习Python的C程序员。我正在编写一个需要发出Linux命令然后捕获输出的Python程序。 (输出应该是python可以存储在字符串中的一行...我希望。)我在一台旧机器上运行Python 2.4.3,据我所知, check_output 电话应该做我需要的。
麻烦的是,python没有识别 check_output 。这是我的原型代码:
#!/usr/bin/python
import sys
print "Current Python Version:: ", (sys.version)
import subprocess
from subprocess import check_output # <<<<<<<< error here!
output = subprocess.check_output(['ls', '-1', '|', 'grep', 'somefile.txt'])
print 'Have %d bytes in output' % len(output)
print output
输出是:
[Linux]$ python myCode.py
Current Python Version:: 2.4.3 (#1, Apr 14 2011, 20:41:59)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)]
Traceback (most recent call last):
File "myCode.py", line 7, in ?
from subprocess import check_output
ImportError: cannot import name check_output
[Linux]$
我使用以下网站作为文档指南;事实上,我的代码的最后三行或多或少都是直接从这个网站上复制过的例子:
https://pymotw.com/2/subprocess/#capturing-output
文档说 check_output 在Python 2.4及更高版本中有效,所以我应该没问题。然而我的Python解释器并不理解 check_output 。
那么...该怎么做?看起来我的版本没问题,Python可以访问子流程但不能 check_output 。我是否需要要求管理员安装库或其他东西?或者我没有正确导入呼叫?
另外:我有点假设 check_output 是我想在这里从我的Linux命令中捕获单行输出的调用。那似乎没问题吗?
谢谢!