这里非常绿色,只是编写代码片段来学习python
我把以下内容放在一起看处理命令返回
test.py
import subprocess
proc = subprocess.Popen('date', stdout=subprocess.PIPE)
output = proc.stdout.read()
for x in output:
print output
Run Code Online (Sandbox Code Playgroud)
我运行它,它迭代58次:
python test.py | wc -l
58
Run Code Online (Sandbox Code Playgroud)
为什么会这样,我无法理解为什么58具体?我本以为它只返回1,这就是输出变量中的所有内容?
ps我知道有一些python库可以用来获取系统时间/日期,但这更多是关于我学习python语句和子进程.
编辑:我应该添加,即使没有'wc -l'它仍然从date命令返回58完整返回.
编辑:如果我用'ls'替换'date',它会完全运行'ls'命令两次.
编辑:另一个例子,如果我使用'whoami'它会返回我的用户名七次?
output是一个字符串(或在Python 3中它是一个字节串).迭代字符串/字节串将遍历各个字符.试着print x看看实际上正在迭代什么.
您output将为每个角色打印一次output.字符串结束,'\n'因此您可以为字符串中的29个字符中的每个字符获取两行输出.这就是58来自哪里.
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> proc = subprocess.Popen('date', stdout=subprocess.PIPE)
>>> output = proc.stdout.read()
>>> for x in output:
... print output
...
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
Thu Jul 16 16:28:33 BST 2015
>>>
Run Code Online (Sandbox Code Playgroud)