python培訓 第五課,檔案操作。

2021-09-27 16:40:05 字數 3316 閱讀 5934

使用open()函式來開啟乙個檔案, 獲取到檔案控制代碼

開啟檔案的方式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 預設使用的是r(唯讀)模式

需要注意encoding表示編碼集. 根據檔案的實際儲存編碼進行獲取資料, 對於我們而言. 更多的是utf-8.

絕對路路徑和相對路路徑:

1. 絕對路徑:從磁碟根目錄開始一直到檔名.

2. 相對路徑:同乙個資料夾下的檔案. 相對於當前這個程式所在的資料夾而言. 如果在同

乙個資料夾中. 則相對路徑就是這個檔名. 如果在上一層資料夾. 則要../

讀取檔案的方法:

read() 將檔案中的內容全部讀取出來. 弊端: 佔記憶體. 如果檔案過大.容易導致記憶體崩潰

read(n) 讀取n個字元. 需要注意的是. 如果再次讀取. 那麼會在當前位置繼續去讀而不是從頭讀, 如果使用的是rb模式. 則讀取出來的是n個位元組

readline() 一次讀取一行資料, 注意: readline()結尾, 注意每次讀取出來的資料都會有乙個\n 所以呢. 需要我們使用strip()方法來去掉\n或者空格

readlines()將每一行形成乙個元素, 放到乙個列表中. 將所有的內容都讀取出來. 所以也是. 容易出現記憶體崩潰的問題.不推薦使用

迴圈讀取. 這種方式是組好的. 每次讀取一行內容.不會產生記憶體溢位的問題.注意: 讀取完的檔案控制代碼一定要關閉 f.close()

寫的時候注意. 如果沒有檔案. 則會建立檔案, 如果檔案存在. 則將原件中原來的內容刪除, 再寫入新內容

wb模式下. 可以不指定開啟檔案的編碼. 但是在寫檔案的時候必須將字串轉化成utf-8的bytes資料

追加(a, ab)模式下. 我們寫入的內容會追加在檔案的結尾.

讀寫模式(r+, r+b)模式. 必須是先讀. 因為預設游標是在開頭的. 準備讀取的. 當讀完了之後再進行寫入. 我們以後使用頻率最⾼的模式就是r+

seek(n) 游標移動到n位置, 注意, 移動的單位是byte. 所以如果是utf-8的中文部分要是3的倍數.

通常我們使用seek都是移動到開頭或者結尾.

移動到開頭: seek(0)

移動到結尾: seek(0,2) seek的第二個引數表示的是從哪個位置進行偏移, 預設是0, 表示開頭, 1表示當前位置, 2表示結尾

使用tell()可以幫我們獲取到當前游標在什麼

truncate() 截斷檔案

fp.read([size]) #size為讀取的長度,以byte為單位

fp.readline([size]) #讀一行,如果定義了size,有可能返回的只是一行的一部分

fp.readlines([size]) #把檔案每一行作為乙個list的乙個成員,並返回這個list。其實它的內部是通過迴圈呼叫readline()來實現的。如果提供size引數,size是表示讀取內容的總長,也就是說可能唯讀到檔案的一部分。

fp.write(str) #把str寫到檔案中,write()並不會在str後加上乙個換行符

fp.writelines(seq) #把seq的內容全部寫到檔案中(多行一次性寫入)。這個函式也只是忠實地寫入,不會在每行後面加上任何東西。

fp.close() #關閉檔案。python會在乙個檔案不用後自動關閉檔案,不過這一功能沒***,最好還是養成自己關閉的習慣。 如果乙個檔案在關閉後還對其進行操作會產生valueerror

fp.flush() #把緩衝區的內容寫入硬碟

fp.fileno() #返回乙個長整型的」檔案標籤「

fp.isatty() #檔案是否是乙個終端裝置檔案(unix系統中的)

fp.tell() #返回檔案操作標記的當前位置,以檔案的開頭為原點

fp.next() #返回下一行,並將檔案操作標記位移到下一行。把乙個file用於for … in file這樣的語句時,就是呼叫next()函式來實現遍歷的。

fp.seek(offset[,whence]) #將檔案打操作標記移到offset的位置。這個offset一般是相對於檔案的開頭來計算的,一般為正數。但如果提供了whence引數就不一定了,whence可以為0表示從頭開始計算,1表示以當前位置為原點計算。2表示以檔案末尾為原點進行計算。需要注意,如果檔案以a或a+的模式開啟,每次進行寫操作時,檔案操作標記會自動返回到檔案末尾。

fp.truncate([size]) #把檔案裁成規定的大小,預設的是裁到當前檔案操作標記的位置。如果size比檔案的大小還要大,依據系統的不同可能是不改變檔案,也可能是用0把檔案補到相應的大小,也可能是以一些隨機的內容加上去。

python中對檔案、資料夾(檔案操作函式)的操作需要涉及到os模組和shutil模組。

得到當前工作目錄,即當前python指令碼工作的目錄路徑: os.getcwd()

返回指定目錄下的所有檔案和目錄名:os.listdir()

函式用來刪除乙個檔案:os.remove()

刪除多個目錄:os.removedirs(r「c:\python」)

檢驗給出的路徑是否是乙個檔案:os.path.isfile()

檢驗給出的路徑是否是乙個目錄:os.path.isdir()

判斷是否是絕對路徑:os.path.isabs()

檢查是否快捷方式os.path.islink ( filename )

檢驗給出的路徑是否真地存:os.path.exists()

返回乙個路徑的目錄名和檔名:os.path.split() eg os.path.split('/home/swaroop/byte/code/poem.txt') 結果:('/home/swaroop/byte/code', 'poem.txt')

分離副檔名:os.path.splitext()

獲取路徑名:os.path.dirname()

獲取檔名:os.path.basename()

執行shell命令: os.system()

讀取和設定環境變數:os.getenv() 與os.putenv()

給出當前平台使用的行終止符:os.linesep windows使用'\r\n',linux使用'\n'而mac使用'\r'

指示你正在使用的平台:os.name 對於windows,它是'nt',而對於linux/unix使用者,它是'posix'

重新命名:os.rename(old, new)

建立多級目錄:os.makedirs(r「c:\python\test」)

建立單個目錄:os.mkdir(「test」)

獲取檔案屬性:os.stat(file)

修改檔案許可權與時間戳:os.chmod(file)

終止當前程序:os.exit()

獲取檔案大小:os.path.getsize(filename)

參照

第五課 文法

1.名詞 場所 行 來 帰 使用移動動詞時,移動的方向用助詞 表示。京都 行 我要去京都。日本 來 我來到了日本。帰 我要回家。注 助詞 讀作 2.行 行 完全否定疑問詞所問的全部範疇時,用助詞 與否定形式一起使用。行 也不去。何 食 什麼也不吃。第6課 沒有任何人在。第10課 3.名詞 交通工具 ...

第五課 文字格式

文字顏色 color 文字的對齊方式 text align 文字修飾 text decoration none 取消下劃線 text decoration overline 新增上劃線 text decoration line through 新增中劃線 text decoration underl...

Python菜鳥學習第五課

第三章 字串方法 3.1find可以在乙個較長的字串中查詢子字串,它返回子串所在位置的最左端索引,如果沒有找到則返回 1 title monty python s flying cirus title.find monty title.find python title.find zirquss 1...