Python奉行簡潔主義,易于讀寫,它使你能夠專注于解決問題而不是去搞明白語言本身。
創(chuàng)新互聯(lián)是一家專業(yè)從事做網(wǎng)站、成都做網(wǎng)站、網(wǎng)頁設計的品牌網(wǎng)絡公司。如今是成都地區(qū)具影響力的網(wǎng)站設計公司,作為專業(yè)的成都網(wǎng)站建設公司,創(chuàng)新互聯(lián)依托強大的技術實力、以及多年的網(wǎng)站運營經(jīng)驗,為您提供專業(yè)的成都網(wǎng)站建設、營銷型網(wǎng)站建設及網(wǎng)站設計開發(fā)服務!
Python是開源軟件。這意味著你不用花一分錢便能復制、閱讀、改動它。
Python兼容眾多平臺,所以開發(fā)者不會遇到使用其他語言時常會遇到的困擾。
Python標準庫確實很龐大。它可以幫助你處理各種工作,包括正則表達式、文檔生成、單元測試、線程、數(shù)據(jù)庫、網(wǎng)頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統(tǒng)、GUI(圖形用戶界面)、Tk和其他與系統(tǒng)有關的操作。
Python這門語言也是很有意思的,它有一個很強大的庫,turtle,可以用來作畫。
1、print()函數(shù):打印字符串;
2、raw_input()函數(shù):從用戶鍵盤捕獲字符;
3、len()函數(shù):計算字符長度;
4、format()函數(shù):實現(xiàn)格式化輸出;
5、type()函數(shù):查詢對象的類型;
6、int()函數(shù)、float()函數(shù)、str()函數(shù)等:類型的轉化函數(shù);
7、id()函數(shù):獲取對象的內存地址;
8、help()函數(shù):Python的幫助函數(shù);
9、s.islower()函數(shù):判斷字符小寫;
10、s.sppace()函數(shù):判斷是否為空格;
11、str.replace()函數(shù):替換字符;
12、import()函數(shù):引進庫;
13、math.sin()函數(shù):sin()函數(shù);
14、math.pow()函數(shù):計算次方函數(shù);
15、os.getcwd()函數(shù):獲取當前工作目錄;
16、listdir()函數(shù):顯示當前目錄下的文件;
17、time.sleep()函數(shù):停止一段時間;
18、random.randint()函數(shù):產生隨機數(shù);
19、range()函數(shù):返回一個列表,打印從1到100;
20、file.read()函數(shù):讀取文件返回字符串;
21、file.readlines()函數(shù):讀取文件返回列表;
22、file.readline()函數(shù):讀取一行文件并返回字符串;
23、split()函數(shù):用什么來間隔字符串;
24、isalnum()函數(shù):判斷是否為有效數(shù)字或字符;
25、isalpha()函數(shù):判斷是否全為字符;
26、isdigit()函數(shù):判斷是否全為數(shù)字;
27、 lower()函數(shù):將數(shù)據(jù)改成小寫;
28、upper()函數(shù):將數(shù)據(jù)改成大寫;
29、startswith(s)函數(shù):判斷字符串是否以s開始的;
30、endwith(s)函數(shù):判斷字符串是否以s結尾的;
31、file.write()函數(shù):寫入函數(shù);
32、file.writeline()函數(shù):寫入文件;
33、abs()函數(shù):得到某數(shù)的絕對值;
34、file.sort()函數(shù):對書數(shù)據(jù)排序;
35、tuple()函數(shù):創(chuàng)建一個元組;
36、find()函數(shù):查找 返回的是索引;
37、dict()函數(shù):創(chuàng)建字典;
38、clear()函數(shù):清楚字典中的所有項;
39、copy()函數(shù):復制一個字典,會修改所有的字典;
40、 get()函數(shù):查詢字典中的元素。
…………
/python通過解釋器內置的open()函數(shù)打開一個文件,并實現(xiàn)該文件與一個程序變量的關聯(lián),open()函數(shù)格式如下:
/open()函數(shù)包含有兩個參數(shù):文件名和打開模式.當文件與執(zhí)行文件在同一文件夾中,直接輸入文件名,亦可輸入文件的完整路徑.打開模式是指以何種方式打開文件,python提供了7種打開模式.
/r/w/x/a模式與b/t/+模式可以組合使用,比如'rt'為文本只讀.'rb'為二級制只讀.
/文件使用結束后,需要使用close()關閉文件使用權限,釋放內存.
/當文件使用文本格式打開時,讀寫按照字符串方式,采用計算機當前編碼或指定編碼.
/當文件以二進制方式打開時,讀寫按照字節(jié)流方式.
/python本身將文件讀取為一個行序列.
python調用read,readline,readlines這三個函數(shù)不能實現(xiàn)對文件內容的讀取。根據(jù)調查相關公開材料,Python由荷蘭數(shù)學和計算機科學研究學會的吉多·范羅蘇姆于1990年代初設計,作為一門叫做ABC語言的替代品。Python提供了高效的高級數(shù)據(jù)結構,還能簡單有效地面向對象編程。Python語法和動態(tài)類型,以及解釋型語言的本質,成為多數(shù)平臺上寫腳本和快速開發(fā)應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用于獨立的、大型項目的開發(fā)。
常見的讀寫操作:
Python內置了讀寫文件的函數(shù),用法和C是兼容的。本節(jié)介紹內容大致有:文件的打開/關閉、文件對象、文件的讀寫等。僅示例介紹 TXT 類型文檔的讀寫,也就是最基礎的文件讀寫,也需要注意編碼問題;
open()?? close()???? with open(...) as ...
看以下示例就能了解 Python?的 open()?及?close()?函數(shù)。這邊調用 read()方法可以一次讀取文件的全部內容,Python把內容讀到內存,用一個str對象表示,具體使用參見下文。
在 E 盤 python_file 文件夾下新建一 a.txt,輸入隨意,如下:
Python 操作 打開及關閉方式 如下:
注意 open() 之后 一定要 close()。但由于文件讀寫時都可能產生IOError,為了保證無論是否出錯都能正確地關閉文件,我們用 try ... finally 來實現(xiàn):
python 簡化了改寫法,即用 with open(...) as ...? ; 建議之后文件讀寫都用該寫法:
上面,你肯定注意到了參數(shù) "r";該參數(shù)決定了打開文件的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個參數(shù)是非強制的,默認文件訪問模式為只讀(r)。
相關參數(shù):
File 對象
file 為一對象,它有一些內置屬性,如下
file對象的屬性:
read()??? read(size)?? readline()?? readlines()
之前的例子已經(jīng)接觸到了 read() 函數(shù),該函數(shù)會會一次性讀取文件的全部內容,如果能確保文件的大小,自然可以。但若文件過大,內存就爆了,所以,可以反復調用read(size)方法,每次最多讀取size個字節(jié)的內容;也可調用 readline() 每次讀取一行內容;而調用readlines()可以一次讀取所有內容并按行返回list??傊?,根據(jù)需求來。僅以 txt 文件為例,其他的文件讀取需要特殊處理;另外,文件的格式編碼方式也需要注意;這邊僅介紹讀取方法,其他的會出專題來學習。
在D:\python_file 下新建 poet.txt;示例如下,由于一個中文會占多個字節(jié),故read(size) 部分會亂碼,如:
write()
寫文件和讀文件是一樣的,唯一區(qū)別是調用open()函數(shù)時,傳入標識符'w'或者'wb'表示寫文本文件或寫二進制文件;'a' 對應的表示追加等。
如下示例,由于 write.txt 文件不存在,創(chuàng)建該文件并寫入:
在上例基礎上,繼續(xù),該文件被重寫:
繼續(xù),這次使用追加,會在文件結尾追加:
文件對象(open() 函數(shù)的返回值)提供了read()函數(shù)可以按字節(jié)或字符讀取文件內容,到底是讀取字節(jié)還是字符,取決于使用 open() 函數(shù)打開文件時,是否使用了 b 模式,如果使用了 b 模式,則每次讀取一個字節(jié);反之,則每次讀取一個字符。
read() 函數(shù)的基本語法格式如下:
file.read([size])
其中,file 表示打開的文件對象;size 作為一個可選參數(shù),用于指定要讀取的字符個數(shù),如果省略,則默認一次性讀取所有內容。
【例 1】采用循環(huán)讀取整個文件的內容。
# a.txt 文件內容為:C語言中文網(wǎng)
f = open("a.txt", 'r', True)
while True:
# 每次讀取一個字符
ch = f.read(1)
# 如果沒有讀到數(shù)據(jù),跳出循環(huán)
if not ch:
break
# 輸出ch
print(ch, end='')
f.close()
運行結果為:
C語言中文網(wǎng)
上面程序采用循環(huán)依次讀取每一個字符(因為程序沒有使用 b 模式),每讀取到一個字符,程序就輸出該字符。
正如從上面程序所看到的,當程序讀寫完文件之后,推薦立即調用 close() 方法來關閉文件,這樣可以避免資源泄露(后續(xù)章節(jié)會詳細介紹 close() 函數(shù))。
注意,在調用 read() 函數(shù)讀取文件內容時,成功讀取的前提是在 open() 函數(shù)中使用 r 或 r+ 的模式打開文件,否則(比如將上面程序中 open()的打開模式改為 w),程序會拋出io.UnsupportedOperation異常:
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\demo.py", line 4, in
ch = f.read(1)
io.UnsupportedOperation: not readable
【例 2】調用 read() 方法時不傳入?yún)?shù),該方法默認會讀取全部文件內容。例如:
f = open("a.txt", 'r', True)
# 直接讀取全部文件
print(f.read())
f.close()
運行結果為:
C語言中文網(wǎng)
read()函數(shù)拋出UnicodeDecodeError異常的解決方法
當使用 open() 函數(shù)打開文本文件時,默認會使用當前操作系統(tǒng)的字符集,比如 Windows 平臺,open() 函數(shù)默認使用 GBK 字符集。因此,上面程序讀取的 a.txt 也必須使用 GBK 字符集保存;否則,程序就會出現(xiàn)UnicodeDecodeError錯誤。
如果要讀取的文件所使用的字符集和當前操作系統(tǒng)的字符集不匹配,則有兩種解決方式:
使用二進制模式讀取,然后用 bytes 的 decode() 方法恢復成字符串。
利用 codecs 模塊的 open() 函數(shù)來打開文件,該函數(shù)在打開文件時允許指定字符集。
例如,下面程序使用二進制模式來讀取文本文件:
# 指定使用二進制方式讀取文件內容,a.txt 以 utf-8 編碼存儲
f = open("a.txt", 'rb', True)
# 直接讀取全部文件,并調用bytes的decode將字節(jié)內容恢復成字符串
print(f.read().decode('utf-8'))
f.close()
上面程序在調用 open() 函數(shù)時,傳入了 rb 模式,這表明采用二進制模式讀取文件,此時文件對象的 read() 方法返回的是 bytes 對象,程序可調用 bytes 對象的 decode() 方法將它恢復成字符串。由于此時讀取的 a.txt 文件是以 UTF-8 的格式保存的,因此程序需要使用 decode() 方法恢復字符串時顯式指定使用 UTF-8 字符集。
下面程序使用 codes 模塊的 open() 函數(shù)來打開文件,此時可以顯式指定字符集:
import codecs
# 指定使用utf-8 字符集讀取文件內容
f = codecs.open("a.txt", 'r', 'utf-8', buffering=True)
while True:
# 每次讀取一個字符
ch = f.read(1)
# 如果沒有讀取到數(shù)據(jù),則跳出循環(huán)
if not ch : break
# 輸出ch
print (ch, end='')
f.close()
上面程序在調用 open() 函數(shù)時顯式指定使用 UTF-8 字符集,這樣程序在讀取文件內容時就完全沒有問題了。