萬惡之源—檔案操作
一. 出識檔案操作
使用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命令操作檔...