【发布时间】:2016-10-17 08:40:14
【问题描述】:
我正在尝试在 BASH shell 中进行重定向,尽管这也可以在 Windows 命令提示符 shell 中使用 Python 的 os.system 函数。我的问题是我试图将 Python 脚本的输出重定向到文本文件,而 Python 脚本不会因为任何奇怪的语法原因而这样做。所以,我写了一个没有意义的小程序来尝试理解这个问题。以下是我的源代码:
import os
for i in range(10):
os.system('ping -c 1 localhost')
print("finishing pinging the localhost - %d" % i)
当我像这样在 shell 中运行它时:$python scriptName.py 程序会打印:
--- localhost ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.080/0.080/0.080/0.000 ms
finishing pinging the localhost - 0
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.073 ms
--- localhost ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.073/0.073/0.073/0.000 ms
finishing pinging the localhost - 1
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.191 ms
--- localhost ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.191/0.191/0.191/0.000 ms
finishing pinging the localhost - 2
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.076 ms
我只显示了上面 BASH shell 的前 3 行输出。但是,当我使用某种类型的重定向运行程序时,我会收到这种不同的输出,从我的角度来看,也有更多不受欢迎的输出。所以如果我像这样运行程序:$python myScript > out.txt。我收到以下输出:
--- localhost ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.076/0.076/0.076/0.000 ms
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.077 ms
--- localhost ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.077/0.077/0.077/0.000 ms
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.082 ms
--- localhost ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.082/0.082/0.082/0.000 ms
finishing pinging the localhost - 0
finishing pinging the localhost - 1
finishing pinging the localhost - 2
finishing pinging the localhost - 3
finishing pinging the localhost - 4
finishing pinging the localhost - 5
finishing pinging the localhost - 6
finishing pinging the localhost - 7
finishing pinging the localhost - 8
finishing pinging the localhost - 9
我编辑了文件的输出以仅显示底部。底部显示了在ping 程序的所有结果之后打印的行,“finishing ping the localhost - #”。这与原程序的逻辑和脚本在 shell 中运行且未重定向时的输出完全不同。
有谁知道为什么添加重定向时输出不同?
【问题讨论】:
标签: python bash shell redirect