初識檔案操作

2022-09-01 06:42:09 字數 2775 閱讀 2911

萬惡之源—檔案操作

一. 出識檔案操作

使用open()函式來開啟乙個檔案,獲取到檔案控制代碼.然後通過檔案控制代碼就可以進行各種各樣的操作了,

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

二. 唯讀操作(r.rb)

1.唯讀操作(r.rb)

f = open(『課堂筆記.txt』, mode=」r」, encoding=」utf-8」)

s = f.read()

f.close()

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

rb.讀取出來的資料是bytes型別,因此在rb模式下,不能讓選擇encoding字符集.

f = open(『課堂筆記.txt』, mode=」rb」)

s = f.read()

print(a)

f.close()

執行結果顯示的資料是bytes型別.

rb的作用:在讀取非文字檔案的時候要使用rb,因為這種資料是沒辦法直接顯示出來的.

2.絕對路徑和相對路徑:

絕對路徑:從磁碟的根目錄開始一直到檔名.還有網際網路上的乙個檔案也是絕對路徑.

相對路徑:同乙個資料夾下的檔案,相對於當前這個程式所在的資料夾而言,如果在同乙個資料夾中,則相對路徑就是這個檔名.如果在上一層資料夾,則要../(返回上一層)

3.讀取方法:

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

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

readline() 一次讀取一行資料注意: readline()結尾, 注意每次讀取出來的資料都會有乙個\n

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

迴圈讀取. 這種⽅方式是組好的. 每次讀取一行容.不會產生記憶體溢位的問題.

f = open(『課堂筆記.txt』, mode=」r」, encoding=」utf-8」)

for line in f:

print(line)

切記讀取完的檔案控制代碼一定要關閉.  f.close()

三. 寫模式(w.wb)

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

f = open("小娃娃", mode="w", encoding="utf-8")

f.write("⾦毛獅王")

f.flush()    # 重新整理. 養成好習慣

f.close()    # 關閉. 養成好習慣

w模式下不能執行讀操作.

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

f = open("小娃娃", mode="wb")

f.write("金毛獅王".encode("utf-8"))

f.flush()

f.close()

四. 追加(a.ab)

在追加模式下.我們寫入的內容會追加在檔案的結尾.

ab模式下同理,只不過是換成了bytes.

五. 讀寫模式(r+. r+b)

對於讀寫模式,必須是先讀,因為預設的游標的位置是在檔案的開頭準備讀取的.讀完了之後再進行寫入.

f = open("小娃娃", mode="r+", encoding="utf-8")

content = f.read()

f.write("麻花的最愛")

print(content)

f.flush()

f.close()

正常的讀取之後, 寫在結尾

如果先執行寫操作就是游標在檔案開頭位置直接寫,就把開頭的內容改寫成了要追加的內容,然後在讀取後面的內容.

六. 寫讀(w+, w+b)   

先將所有的內容清空. 然後寫入. 最後讀取. 但是讀取的內容是空的, 不常⽤…………

七.  追加讀(a+)   

a+模式下, 不論先讀還是後讀. 都是讀取不到資料的.

a+b模式下就是把字元換成了位元組.

八. 其他的相關操作

1. seek(n)

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

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

移動到開頭: seek(0)       

移動到結尾: seek(0,2) 

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

2. tell()

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

補充知識點:

readable()       判斷檔案是否可讀

writable()       判斷檔案是否可寫.

readlines()      拿到的是列表,每一行後面跟著乙個\n(換行符)

如果要去掉換行符可以用.end(『』)或者是strip()

strip()不只是去掉空格和\n(換行符),還可以去掉製表符\t.

truncate() 指的是從開始到游標當前位置之間的內容擷取.後面的全部刪除

truncate(n) 給了引數,就是擷取從開始到指定的游標位置.後面的內容全部刪除.

初識函式及檔案操作

函式式程式設計最重要的是增強 的重用性和可讀性 def函式名 引數 函式體.返回值 函式的定義主要有如下要點 return值是用來給呼叫者的。在函式中,一旦執行了return,函式執行過程立即終止。在未設定return值得時候,自動返回none。1 普通引數 嚴格按照順序,將實際引數賦值給形式引數 ...

初識Linux Linux檔案和檔案操作管理

1.什麼是inode 首先我們要知道檔案在硬碟上的最小儲存單位叫扇區每個扇區儲存512位元組,作業系統不會乙個乙個扇區讀取,效率太低了,而是一次讀取多個扇區一次性讀取姨 塊 塊,一般是4kb,也就是8個扇區。檔案的資料都儲存在塊中,那麼必然得乙個地方儲存檔案的基本資訊 元資訊 這種儲存檔案基本資訊的...

Hadoop 初識HDFS檔案操作命令

客戶端rpc埠是8020 web端訪問埠50070 docker run p 22022 22 p 8020 8020 p 50010 50010 p 50020 50020 p 50070 50070 p 50075 50075 it mdouchement hdfs進入容器即可使用fs命令操作檔...