python檔案處理

來源:互聯網
上載者:User

標籤:開啟檔案   效果   error:   soft   又能   轉換   ike   typeerror   size   

#寫和讀取時候,所有的資料只能是字串,不能是數字或者其他內容#建立一個檔案;冰倩寫入檔案內容為:這是一個新的檔案內容f = open(‘a.txt‘,"w",encoding="utf8")f.write("這是一個新的檔案內容\n")   #寫入操作 \n斷行符號換行f.write("這是一個新的檔案內容\n")   #寫入操作f.writelines([‘111\n‘,‘222\n‘])   #列表方式寫入多行print(f.writable())  # 判斷是否可寫f.close()#開啟檔案,讀取檔案內容,不寫‘r‘,預設是唯讀模式r = open("a.txt",‘r‘,encoding="utf8")data = r.read()  #讀取全部內容print(data)print(r.readable())  #判斷檔案是否唯讀print(r.readline())  #一次讀一行內容,下一行內容可以在接著運行readline,預設最後一行內容有個斷行符號,會有換行的情況print(r.readline(),end="") #去掉最後的斷行符號print(r.readlines()) #讀取所有的內容,把每行的內容放到一個列表中,預設最後一行有空格r.close()#追加f = open(‘a.txt‘,"a",encoding="utf8")f.write("這是追加的內容\n")f.close()#r+ 既能讀又能寫# f = open(‘a.txt‘,"r+",encoding="utf8")# f.write("這是r+的內容\n")  #預設第一行開始寫入,把存在的內容直接按順序覆蓋修改# f.close()#開啟不用關閉檔案 用with就可以,自動會關閉檔案with open(‘a.txt‘,‘r‘,encoding="utf8") as f:    data = f.read()    print(data)# str ---- > encoding(編碼) ----->bytes# btyes ---> encode(解碼) ------->str#open模式‘‘‘不填寫預設     ‘r‘       open for reading (default)         ‘w‘       open for writing, truncating the file first         ‘x‘       create a new file and open it for writing         ‘a‘       open for writing, appending to the end of the file if it exists         ‘b‘       binary mode不填寫預設     ‘t‘       text mode (default)         ‘+‘       open a disk file for updating (reading and writing)         ‘U‘       universal newline mode (deprecated)‘‘‘#b模式就是二進位的方式:#寫f = open(‘二進位檔案‘,‘wb‘)  # wb 二進位方式寫入檔案,二進位檔案沒有編碼,只有解碼#f.write(‘1111,你好‘)         #報錯 TypeError: a bytes-like object is required, not ‘str‘ 二進位檔案寫入,需要以二進位的方式,不能直接把str寫到裡面#處理方式:  可以先把字串轉換成二進位的方式在寫入#字串轉二進位過程(編碼):test = bytes(‘1111,你好‘,encoding="utf-8")   #bytes 和 ‘1111,你好‘.encode="utf-8  編碼都是一樣的;一個是bytes方法  一個是字串自己提供的一個方法f.write(test)#讀f = open(‘二進位檔案‘,‘rb‘)   #二進位的方式讀取檔案data = f.read()print(data)                  #b‘1111,\xe4\xbd\xa0\xe5\xa5\xbd‘讀取的是二進位的檔案,所以需要解碼成字串.#二進位轉字串過程(解碼):print(data.decode(‘utf-8‘))  #解碼後:1111,你好‘‘‘一: read(3):檔案開啟檔案為文字模式時,代表讀取3個字元;檔案開啟檔案為b模式時,代表讀取3個位元組                其餘的檔案內游標移動都是以位元組為單位如seek,tell,truncate注意:  1. seek有三種移動方式0,1,2,其中1和2必須在b模式下進行,但無論哪種模式,都是以bytes為單位移動的  2. truncate是截斷檔案,所以檔案的開啟檔案必須可寫,但是不能用w或w+等方式開啟,因為那樣直接清空檔案了,所以truncate要在r+或a或a+等模式下測試效果‘‘‘f = open(‘二進位檔案‘,‘r+‘,encoding="utf-8")‘‘‘二進位檔案內容如下:你好‘‘‘f.readline()print(f.tell())   #tell游標當前所在位置等於8  為什麼是8 因為"你好" 一個中文為3個位元組加上win平台的預設斷行符號為"\r\n" 所以為8f.seek(1)         #seek游標跳到第1個位元組位置print(f.tell())f.truncate(3)    #從開始算,將檔案安只保留從0-3個位元組的內容#seek 進階模式f.seek(10,0)  #0是預設;不寫就是預設0;從檔案開始數10個位置f.seek(10,1)  #1相對位置,就是上一次位置,在數10個位置,這個需要b模式開啟檔案,不然報錯f.seek(-10,2)  #2倒序,就是倒著讀取,在數-10個位置,這個需要b模式開啟檔案,不然報錯f.close()#顯示win平台的預設斷行符號;newline以最原始的方式顯示分行符號f = open(‘二進位檔案‘,‘r+‘,encoding="utf-8",newline=‘‘)data = f.readlines()print(data)       #[‘你好\r\n‘, ‘1111‘]   #newline效果就顯示\r\n;  不加newline預設情況下是[‘你好\n‘, ‘1111‘]少一個\r是因為python給你最佳化掉了

 

python檔案處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.