文件處理
1.用open()就可以打開文件,但是請注意:文件里有中文請?jiān)O(shè)置編碼,如 :open("filepath","r",encoding="utf-8")本書沒有說明這個,結(jié)果我輸出的都是亂碼,在網(wǎng)上找了好久才發(fā)現(xiàn)解決方法。第二個參數(shù)是文件讀寫模式,詳細(xì)請看下面
'r' 打開讀取文件(默認(rèn))
'w' 打開寫入文件,會先清除文件內(nèi)容
'x' 創(chuàng)建一個新文件不打開寫入
'a' 如果文件存在,打開寫入,并附加到文件末尾
'b' 二進(jìn)制模式
't' 文本模式(默認(rèn))
'+' 打開一個磁盤上的文件并更新(讀取和寫入)
下面是一個簡單的打開文件并讀取內(nèi)容的python代碼
# 自python3開始默認(rèn)使用unicode保存代碼文件,所以可以直接在代碼里使用中文,如果是python2.x記得設(shè)置編碼# 導(dǎo)入os庫import osos.chdir("workpath") # 切換工作目錄os.getcwd() # 查看當(dāng)前工作目錄path = "新建文本文檔.txt" # 如果沒有切換工作目錄,這里就要用絕對路徑data = open(path, "r", encoding="utf-8") # 用utf-8格式打開文件,如果有中文請一定要指明編碼格式,目前我看到的中文博客里基本都會提到中文編碼的坑,前輩們的血淚教訓(xùn)一定不能忘啊# 循環(huán)讀取文件內(nèi)容for line in data: try: # 異常處理 PRint(line, end="") # end=""是去掉換行符號 except IOError as ie: #as 也可以用于賦值
print(str(ie)) #str() 用于轉(zhuǎn)換成字符串,相當(dāng)于c#里的ToString() pass # pass就是pass拉
data.seek(0) # seek用于退回到起始位置(其實(shí)根據(jù)參數(shù)可以跳到指定位置,但0算是用的最多的)data.close() # 一定要記得關(guān)閉2.字符串操作
split()和c#一樣可以分離字符串,但是要注意參數(shù)是不返回的,比如strA.split(":")返回的字符串列表里沒有:這點(diǎn)要注意,還有一個缺省參數(shù)用于指定分離成幾個,默認(rèn)是-1即有多少分離多少,比如是strA.split(":",1)則無論字符串里有多少個:都只會分裂成兩個字符串,返回值是列表,可以直接a=strA.split(":")也可以(a,b)=strA.split(":"),一般情況下我建議前一種,除非你用strA.split(":",1)確定分離的數(shù)量,還有一點(diǎn)要注意,split返回的是用小括號包圍的列表,即不可變列表,也稱作元組(tuple)。而中括號包圍的列表是可變列表。
find()有點(diǎn)類似c#里的indexOf,查詢匹配項(xiàng)并返回下標(biāo),python里也有index()但是index()在找不到匹配項(xiàng)會報(bào)異常,而find()則返回-1,所以一般建議使用find,可以用參數(shù)指定查詢范圍,如strA.find(":",0,10)查詢下標(biāo)0至9的字符匹配,范圍包含左邊不含右邊,記住哦。
還有一些函數(shù)就不一一細(xì)說了,如果有其他語言的編程經(jīng)驗(yàn),或者英語非常好的話,很多函數(shù)一看名稱就知道是干什么的了,比如append()我不知道也沒有這個單詞,但我知道這一般是在最后附加,等等。這些東西還是要慢慢積累,不是一兩本書就能說的完的。
Ps:寫博客也是一門技術(shù)活啊,這篇文章寫完一看,感覺沒什么用,而且斷斷續(xù)續(xù)的寫了快一下午。真是佩服那些大神。
新聞熱點(diǎn)
疑難解答
圖片精選