Python for x 循环返回不止一次

标签 python subprocess

这里非常绿色,只是编写代码片段来学习 python

我把下面的放在一起看处理命令返回

测试.py

import subprocess
proc = subprocess.Popen('date', stdout=subprocess.PIPE)
output = proc.stdout.read()
for x in output:
        print output

我运行它,它迭代了 58 次:

python test.py | wc -l
58

这是为什么呢,具体为什么是58我不明白?我原以为它只会返回 1,这就是输出变量中的全部内容?

附注我知道有 python 库可用于获取系统时间/日期,但这更多是关于我学习 python 语句和子进程。

编辑:我应该补充一点,即使没有“wc -l”,它仍然会从 date 命令返回 58 个完整返回值。

编辑:如果我用“ls”替换“date”,它会完整地运行“ls”命令两次。

编辑:另一个例子,如果我使用“whoami”,它会返回我的用户名 7 次?

最佳答案

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

>>> 

关于Python for x 循环返回不止一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31458222/

相关文章:

python - 如何以编程方式将数据输入 python 'input()' 提示?

python - 使用此部分代码查找低于给定限制的所有素数

python - 加快 Pandas 中 csv 文件的条件行读取速度?

python - celery 任务状态总是挂起

python - 测试来自 Python 套接字异常的特定错误号

python - 子进程中单引号和双引号之间的区别[Python 3.4]

Python subprocess.Popen 管道自定义 fd

python - 使用 pandas 删除数据行会增加内存使用量

python - 子进程不会接受 dxl 脚本的输出

python - 如何使用pytest基于服务器输出测试客户端-服务器交互?