通常來說,一個(gè)Python程序可以從鍵盤讀取輸入,也可以從文件讀取輸入;而程序的結(jié)果可以輸出到屏幕上,也可以保存到文件中便于以后使用。本文就來介紹Python中最基本的I/O函數(shù)。
一、控制臺(tái)I/O
1.讀取鍵盤輸入
內(nèi)置函數(shù)input([prompt]),用于從標(biāo)準(zhǔn)輸入讀取一個(gè)行,并返回一個(gè)字符串(去掉結(jié)尾的換行符):
s = input("Enter your input:")
注:在Python 3.x版本中取消了 raw_input() 函數(shù)。
2.打印到屏幕
最簡(jiǎn)單的輸出方法是用print語句,你可以給它傳遞零個(gè)或多個(gè)用逗號(hào)隔開的表達(dá)式:
print([object, ...][, sep=' '][, end='endline_character_here'][, file=redirect_to_here])
方括號(hào)內(nèi)是可選的,sep表示分割符,end表示結(jié)束符,file表示重定向文件。如果要給sep、end、file指定值必須使用關(guān)鍵字參數(shù)。
print('hello', 'world', sep='%') # 輸出 hello%world print('hello', 'world', end='*') # 輸出 hello world*,并且不換行
二、文件I/O
讀寫文件之前,先用open()函數(shù)打開一個(gè)文件,它會(huì)返回一個(gè)文件對(duì)象(file object):
f = open(filename,mode)
如果不指定mode參數(shù),文件將默認(rèn)以‘r'模式打開。模式中的字符有:
r:只讀
w:只寫,如果文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件
+:讀寫(不能單獨(dú)使用)
a:打開文件用于追加,只寫,不存在則創(chuàng)建新文件
b:以二進(jìn)制模式打開(不能單獨(dú)使用)
所以可能的模式大概有r、w、r+、w+、rb、wb、rb+、wb+、a、a+、ab、ab+,注意只有w和a可以創(chuàng)建文件。
通常情況下,文件都是以文本模式(text mode)打開的,也就是說,從文件中讀寫的是以一種特定的編碼格式進(jìn)行編碼(默認(rèn)的是 UTF-8)的字符串。如果文件以二進(jìn)制模式(binary mode)打開,數(shù)據(jù)將以字節(jié)對(duì)象的形式進(jìn)行讀寫:
f = open('a.txt','wb+') f.write('I like apple!') # 報(bào)錯(cuò) f.write(b'I like apple!') # 以bytes對(duì)象的形式進(jìn)行讀寫
Bytes對(duì)象是0到127的不可修改的整數(shù)序列,或純粹的 ASCII 字符,它的用途是存儲(chǔ)二進(jìn)制數(shù)據(jù)。
可以通過在一個(gè)字符串前面加上'b'來創(chuàng)建一個(gè)bytes literal;
也可以通過bytes() 函數(shù)創(chuàng)建一個(gè) bytes 對(duì)象。
注意:如果bytes() 函數(shù)的初始化器是一個(gè)字符串,那么必須提供一種編碼。
b1 = b'This is string' b2 = bytes('This is string', 'UTF-8') # 必須指定編碼格式
字符串對(duì)象與字節(jié)對(duì)象是不兼容的,要將 bytes 轉(zhuǎn)變?yōu)?str, bytes 對(duì)象必須要進(jìn)行解碼,使用decode() 方法:
b = bytes('This is string', 'UTF-8') print(b, b.decode(), sep='/n') # 輸出: # b'This is string' # This is string
新聞熱點(diǎn)
疑難解答
圖片精選