當前位置:首頁 » 編程語言 » stdoutpython

stdoutpython

發布時間: 2022-10-16 15:44:21

㈠ 求解python subprocess 標准輸出stdout無法獲取提示信息

你輸入cmd命令,就相當於新打開了一個 Windows命令提示符, 當前的終端理論上被系統kill掉,程序block在當前窗口,但你無法終止 也就是這個原因。
而你輸入dir命令 就是查看當前文件目錄。
你做這樣一個測試 :
你輸入a 回車
然後輸入 cd 回車, 你按方向鍵中的向上鍵, 你還能找到a,在按向下鍵你能找到cd。
那麼如果你此時輸入cmd,方向鍵上下鍵都沒用了。
這就是原因

㈡ Python sys.stdout與sys.stderr 與控制台輸出異常有關嗎

通常顧名思義stdout就是標准輸出,stderr就是錯誤輸出。可以用重定向把它們集中到一起。
你的問題需要細化,到底要什麼,最好截圖

㈢ python2 中from sys import stdout什麼意思

python從sys庫中導入stdout方法。
在Python中,文件對象sys.stdin、sys.stdout和sys.stderr分別對應解釋器的標准輸入、標准輸出和標准出錯流

㈣ 【關於python】請問sys.stdout.flush()是什麼意思一般用在什麼地方

python的stdout是有緩沖區的,給你個例子你就知道了

importtime
importsys

foriinrange(5):
printi,
#sys.stdout.flush()
time.sleep(1)

這個程序本意是每隔一秒輸出一個數字,但是如果把這句話sys.stdout.flush()注釋的話,你就只能等到程序執行完畢,屏幕上會一次性輸出0,1,2,3,4。

如果你加上sys.stdout.flush(),刷新stdout,這樣就能每隔一秒輸出一個數字了。


可以用在網路程序中多線程程序,多個線程後台運行,同時要能在屏幕上實時看到輸出信息。

㈤ python標准輸出重定向stdout.py的意思

sys.stdout 默認就是輸出到控制台(console),print 默認的輸出也是 sys.stdout,所以輸出到控制台。
在 輸入B 那,做了上下文切換with open
,也就是把默認的輸出流指向到文件 out.log,
對應的代碼是: sys.stdout = self.out_new,這里 out_new -> out.log,out_old = console
所以就print 指向文件,而不是控制台了

離開語句時,執行 sys.stdout = self.out_old => sys.stdout = console,還原原來的默認輸入流

於是後面就輸出到默認的控制

㈥ python中怎麼用控制台使用方法

本文實例講述了Python顯示進度條的方法,是Python程序設計中非常實用的技巧。分享給大家供大家參考。具體方法如下:
首先,進度條和一般的print區別在哪裡呢?
答案就是print會輸出一個\n,也就是換行符,這樣游標移動到了下一行行首,接著輸出,之前已經通過stdout輸出的東西依舊保留,而且保證我們在下面看到最新的輸出結果。
進度條不然,我們必須再原地輸出才能保證他是一個進度條,否則換行了怎麼還叫進度條?
最簡單的辦法就是,再輸出完畢後,把游標移動到行首,繼續在那裡輸出更長的進度條即可實現,新的更長的進度條把舊的短覆蓋,就形成了動畫效果。
可以想到那個轉義符了吧,那就是\ r。
轉義符r就可以把游標移動到行首而不換行,轉義符n就把游標移動到行首並且換行。
在python中,輸出stdout(標准輸出)可以使用sys.stdout.write
例如:

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2
#Author: [email protected]
##2010-10-27 22:07
"""
Usage:
Just A Template
"""
from __future__ import division

import sys,time
j = '#'
if __name__ == '__main__':
for i in range(1,61):
j += '#'
sys.stdout.write(str(int((i/60)*100))+'% ||'+j+'->'+"\r")
sys.stdout.flush()
time.sleep(0.5)
print

第二種思路是用轉義符\b
轉義符\b是退格鍵,也就是說把輸出的游標往回退格子,這樣就可以不用+=了,例如:

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2
#Author: [email protected]
#2010-10-27 22:07
"""
Usage:
Just A Template
"""
from __future__ import division

import sys,time
if __name__ == '__main__':
for i in range(1,61):
sys.stdout.write('#'+'->'+"\b\b")
sys.stdout.flush()
time.sleep(0.5)
print

游標回退2格,寫個#再回退,再寫,達到增長的目的了
不過寫這么多似乎是廢話,在耳邊常常聽到一句話:那就是不要重復造輪子。實際上python有豐富發lib幫你實現這個東西,你完全可以把心思放在邏輯開發上而不用注意這些小細節
下面要介紹的就是這個類「progressbar」,使用easy_install可以方便的安裝這個類庫,其實就一個文件,拿過來放到文件同一個目錄下面也直接可以import過來
如下圖所示:

下面就是基本使用舉例:

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

#!/usr/bin/env python
# -*- coding=utf-8 -*-
#Using GPL v2
#Author: [email protected]
#2010-10-27 22:53
"""
Usage:
Just A Template
"""
from __future__ import division

import sys,time
from progressbar import *
total = 1000

#基本用法
progress = ProgressBar()
for i in progress(range(total)):
time.sleep(0.01)

pbar = ProgressBar().start()
for i in range(1,1000):
pbar.update(int((i/(total-1))*100))
time.sleep(0.01)
pbar.finish()

#高級用法
widgets = ['Progress: ', Percentage(), ' ', Bar(marker=RotatingMarker('>-=')),
' ', ETA(), ' ', FileTransferSpeed()]
pbar = ProgressBar(widgets=widgets, maxval=10000000).start()
for i in range(1000000):
# do something
pbar.update(10*i+1)
time.sleep(0.0001)
pbar.finish()

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216

# coding:utf-8
import sys
import time
from progressbar import AnimatedMarker, Bar, BouncingBar, Counter, ETA, \
FileTransferSpeed, FormatLabel, Percentage, \
ProgressBar, ReverseBar, RotatingMarker, \
SimpleProgress, Timer

examples = []

def example(fn):
try:
name = 'Example %d' % int(fn.__name__[7:])
except:
name = fn.__name__

def wrapped():
try:
sys.stdout.write('Running: %s\n' % name)
fn()
sys.stdout.write('\n')
except KeyboardInterrupt:
sys.stdout.write('\nSkipping example.\n\n')

examples.append(wrapped)
return wrapped

@example
def example0():
pbar = ProgressBar(widgets=[Percentage(), Bar()], maxval=300).start()
for i in range(300):
time.sleep(0.01)
pbar.update(i + 1)
pbar.finish()

@example
def example1():
widgets = ['Test: ', Percentage(), ' ', Bar(marker=RotatingMarker()),
' ', ETA(), ' ', FileTransferSpeed()]
pbar = ProgressBar(widgets=widgets, maxval=10000000).start()
for i in range(1000000):
# do something
pbar.update(10 * i + 1)
pbar.finish()

@example
def example2():
class CrazyFileTransferSpeed(FileTransferSpeed):
"""It's bigger between 45 and 80 percent."""

def update(self, pbar):
if 45 < pbar.percentage() < 80:
return 'Bigger Now ' + FileTransferSpeed.update(self, pbar)
else:
return FileTransferSpeed.update(self, pbar)

widgets = [CrazyFileTransferSpeed(), ' <<<', Bar(), '>>> ',
Percentage(), ' ', ETA()]
pbar = ProgressBar(widgets=widgets, maxval=10000000)
# maybe do something
pbar.start()
for i in range(2000000):
# do something
pbar.update(5 * i + 1)
pbar.finish()

@example
def example3():
widgets = [Bar('>'), ' ', ETA(), ' ', ReverseBar('<')]
pbar = ProgressBar(widgets=widgets, maxval=10000000).start()
for i in range(1000000):
# do something
pbar.update(10 * i + 1)
pbar.finish()

@example
def example4():
widgets = ['Test: ', Percentage(), ' ',
Bar(marker='0', left='[', right=']'),
' ', ETA(), ' ', FileTransferSpeed()]
pbar = ProgressBar(widgets=widgets, maxval=500)
pbar.start()
for i in range(100, 500 + 1, 50):
time.sleep(0.2)
pbar.update(i)
pbar.finish()

@example
def example5():
pbar = ProgressBar(widgets=[SimpleProgress()], maxval=17).start()
for i in range(17):
time.sleep(0.2)
pbar.update(i + 1)
pbar.finish()

@example
def example6():
pbar = ProgressBar().start()
for i in range(100):
time.sleep(0.01)
pbar.update(i + 1)
pbar.finish()

@example
def example7():
pbar = ProgressBar() # Progressbar can guess maxval automatically.
for i in pbar(range(80)):
time.sleep(0.01)

@example
def example8():
pbar = ProgressBar(maxval=80) # Progressbar can't guess maxval.
for i in pbar((i for i in range(80))):
time.sleep(0.01)

@example
def example9():
pbar = ProgressBar(widgets=['Working: ', AnimatedMarker()])
for i in pbar((i for i in range(50))):
time.sleep(.08)

@example
def example10():
widgets = ['Processed: ', Counter(), ' lines (', Timer(), ')']
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(150))):
time.sleep(0.1)

@example
def example11():
widgets = [FormatLabel('Processed: %(value)d lines (in: %(elapsed)s)')]
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(150))):
time.sleep(0.1)

@example
def example12():
widgets = ['Balloon: ', AnimatedMarker(markers='.oO<a href="">@*</a> ')]
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(24))):
time.sleep(0.3)

@example
def example13():
# You may need python 3.x to see this correctly
try:
widgets = ['Arrows: ', AnimatedMarker(markers='←↖↑↗→↘↓↙')]
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(24))):
time.sleep(0.3)
except UnicodeError:
sys.stdout.write('Unicode error: skipping example')

@example
def example14():
# You may need python 3.x to see this correctly
try:
widgets = ['Arrows: ', AnimatedMarker(markers='◢◣◤◥')]
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(24))):
time.sleep(0.3)
except UnicodeError:
sys.stdout.write('Unicode error: skipping example')

@example
def example15():
# You may need python 3.x to see this correctly
try:
widgets = ['Wheels: ', AnimatedMarker(markers='◐◓◑◒')]
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(24))):
time.sleep(0.3)
except UnicodeError:
sys.stdout.write('Unicode error: skipping example')

@example
def example16():
widgets = [FormatLabel('Bouncer: value %(value)d - '), BouncingBar()]
pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(180))):
time.sleep(0.05)

@example
def example17():
widgets = [FormatLabel('Animated Bouncer: value %(value)d - '),
BouncingBar(marker=RotatingMarker())]

pbar = ProgressBar(widgets=widgets)
for i in pbar((i for i in range(180))):
time.sleep(0.05)

@example
def example18():
widgets = [Percentage(),
' ', Bar(),
' ', ETA(),
' ', AdaptiveETA()]
pbar = ProgressBar(widgets=widgets, maxval=500)
pbar.start()
for i in range(500):
time.sleep(0.01 + (i < 100) * 0.01 + (i > 400) * 0.9)
pbar.update(i + 1)
pbar.finish()

@example
def example19():
pbar = ProgressBar()
for i in pbar([]):
pass
pbar.finish()

try:
for example in examples:
example()
except KeyboardInterrupt:
sys.stdout('\nQuitting examples.\n')

㈦ python sys.stdout.write 是怎麼意思 怎麼用

sys.stdout 是標准輸出文件。write就是往這個文件寫數據。
合起來就是列印數據到標准輸出。

對初學者來說,和print功能一樣。

㈧ python stdout 什麼意思

指的是標本輸出,對於Python,是指控制台輸出,如下:

此外,你可以新建或者打開一個文件,將要輸出的內容輸出到文件內並保存,這是另一種輸出到文件的輸出。如:print("這是文件輸出!", file = print.txt)

㈨ python stdout 什麼用

sys.stdout是標准輸出文件。write就是往這個文件寫數據。合起來就是列印數據到標准輸出。對初學者來說,和print功能一樣。

㈩ python stdout 什麼用

標准輸出(sys.stdout)對應的操作就是print(列印)了,標准輸入(sys.stdin)則對應input(接收輸入)操作,標准錯誤輸出和標准輸出類似也是print(列印)。
python最基本的操作 - 列印:
print 1

其效果是把 1 寫在console(命令行)裡面讓你看。
實際上他的操作可以理解為:把console(命令行)作為一個板子,通過sys.stdout = console指定往console板子上寫東西(console是默認的,也就是說你不修改要往哪兒寫的話,就會默認往這寫),在print 1的時候,就是告訴python,我要寫1,然後python就會去sys.stdout所指定的板子里,也就是console(命令行)里寫上 1。
(標准錯誤輸出也是同樣的過程,你會發現當程序出錯時,錯誤信息也會列印在console裡面。)

其實只要一個對象具有write方法,就可以被當作「板子」,告訴sys.stdout去哪裡寫。
說道write方法,第一個想到的可能就是文件操作了。
f=open('log.txt','w')

想上面那樣聲明一個文件對象 f,此文件對象就擁有了write方法,就可以被用來當作標准輸出和保准錯誤輸出的板子。

f=open('log.txt','w')
__console__ = sys.stdout #把默認的「板子」 - 命令行做個備份,以便可以改回來

sys.stdout = f

print 1

sys.stdout = __console__
print 2

上面的操作,通過sys.stdout = f 指定列印時的板子改成了 f。所以在使用print的時候,不再是把1列印在命令行里,而是寫在了log.txt文件裡面。

後面又把板子改成了命令行,此時print 2就又把2列印到命令行了

熱點內容
安卓上哪裡下大型游戲 發布:2024-12-23 15:10:58 瀏覽:189
明日之後目前適用於什麼配置 發布:2024-12-23 14:56:09 瀏覽:55
php全形半形 發布:2024-12-23 14:55:17 瀏覽:829
手機上傳助手 發布:2024-12-23 14:55:14 瀏覽:732
什麼樣的主機配置吃雞開全效 發布:2024-12-23 14:55:13 瀏覽:830
安卓我的世界114版本有什麼 發布:2024-12-23 14:42:17 瀏覽:710
vbox源碼 發布:2024-12-23 14:41:32 瀏覽:278
詩經是怎麼存儲 發布:2024-12-23 14:41:29 瀏覽:660
屏蔽視頻廣告腳本 發布:2024-12-23 14:41:24 瀏覽:419
php解析pdf 發布:2024-12-23 14:40:01 瀏覽:819