Python3之打印操作打印流重定向(下)

166.jpg

概述

當(dāng)我們在Python的print打印時(shí),我們到底在使用什么? 其實(shí)print語句不過是Python簡便使用的特性體驗(yàn)而已,其背后就是sys.stdout對象的簡單接口,即我們也可以利用sys.stdout完成所有print打印行為,比如打印Hello, world!。

import sys
sys.stdout.write('Hello, world!')

示例結(jié)果:

Hello, world!

再者

import sys
s1 = 'Hello,'
s2 = 'world!'

print(s1, s2, end='\n')

sys.stdout.write(str(s1) + ' ' + str(s2) + '\n')

示例結(jié)果:

Hello, world!
Hello, world!

重定向輸出流

我們已經(jīng)知道print對sys.stdout的依賴,那么我們能否將sys.stdout賦值為標(biāo)準(zhǔn)輸出流以外的東西,即將print的文字傳送到其他地方。

import sys
s1 = 'Hello,'
s2 = 'world!'
sys.stdout = open('hello.txt', 'a')
...
print(s1, s2)
print(s2, s1)

hello.text內(nèi)容:

Hello, world!
world! Hello,

可以看到標(biāo)準(zhǔn)輸出流并沒有打印任何信息,而需要被打印的內(nèi)容全部被寫入hello.txt文件中,這是為何? 因?yàn)槲覀儼?code>sys.stdout重設(shè)成已經(jīng)打開的文件對象,重設(shè)之后,程序中所有的print都會將文字輸出至文件hello.txt中,即進(jìn)程中只有一個sys模塊,通過這種方式就可以將所有的print進(jìn)行重定向。當(dāng)然我們也可以對單個print進(jìn)行重定向,即上節(jié)介紹的print函數(shù)中的file參數(shù)完成重定向,這也是為何print定義file之后不會進(jìn)行原始輸出流的操作,即屏幕沒有打印該次print函數(shù)的字符串信息。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容