標籤:報錯 python python基礎 內容 pre des 讀寫 下載 ice
檔案操作首先做的是,開啟檔案,開啟檔案有兩種方法open(...) 和 file(...),本質上前者在內部會調用後者來進行檔案操作,但是一般都用open()
操作檔案包括了檔案的讀、寫和關閉,首先來談談開啟檔案:當我們執行 檔案控制代碼 = open(‘檔案路徑‘, ‘模式‘)操作的時候,要傳遞給open方法一個表示模式的參數:
來段代碼示範一下
f = open(\d:..,mode=‘r‘,‘encodeing=utf-8‘) #檔案控制代碼 = open(‘檔案路徑‘, ‘模式‘) 路徑分為相對路徑和絕對路徑
開啟檔案的模式有:
- r,唯讀模式(預設)。
- w,唯寫模式。【不可讀;不存在則建立;存在則刪除內容;】
- a,追加模式。【可讀; 不存在則建立;存在則只追加內容;】
"+" 表示可以同時讀寫某個檔案
- r+,可讀寫檔案。【可讀;可寫;可追加】
- w+,先寫再讀。【這個方法開啟檔案會清空原本檔案中的所有內容,將新的內容寫進去,之後也可讀取已經寫入的內容】
- a+,同a
"U"表示在讀取時,可以將 \r \n \r\n自動轉換成 \n (注意:只能與 r 或 r+ 模式同使用)
"b"表示處理二進位檔案(如:FTP發送上傳ISO鏡像檔案,linux可忽略,windows處理二進位檔案時需標註)
#用rb開啟不需要編碼解碼,用在非文字的讀寫
# f = open(‘d\作品\模特主婦護士班主任‘,mode=‘r‘)
# content = f.read()
# print(content)
# f.close()
#
#唯寫 對於W,沒有此檔案就會建立
# f = open(‘log‘,mode=‘w‘,encoding=‘utf-8‘)
# f.write(‘騎兵步兵‘)
# f.close()
#先將源檔案內容全部清除,再寫
# f = open(‘log‘,mode=‘w‘,encoding=‘utf-8‘)
# f.write(‘高清‘)
# f.close()
# f = open(‘log‘,mode=‘wb‘)
# f.write(‘劇情‘.encode(‘utf-8‘)) #endode後面跟的是所用軟體預設的編碼方式,否則會報錯
# f.close()
#追加 r,rb
# f = open(‘log‘,mode=‘a‘,encoding=‘utf-8‘)
# f.write(‘佳琪‘)
# f.close()
#追加寫
#f = open(‘log‘,mode=‘ab‘)
# f.write(‘佳琪‘.encode(‘utf-8‘))
# f.close()
#讀寫
# f = open(‘log‘,mode=‘r+‘,encoding=‘utf-8‘)
# f.write(‘佳琪‘)
# print(f.read())
# f.close()
#讀寫的bytes類型,r+b也是讀寫,但是是以bytes類型,最常用r+
# f = open(‘log‘,mode=‘r+b‘)
# print(f.read())
# f.write(‘佳琪‘.encode(‘utf-8‘))
# print(f.read())
# f.close()
#w+寫讀,只要有w都是先清除再寫
# f = open(‘log‘,mode=‘w+‘,encoding=‘utf-8‘)
# f.write(‘佳琪‘)
# print(f.read())
# f.close()
# f = open(‘log‘,mode=‘w+‘,encoding=‘utf-8‘)
# f.write(‘佳琪‘)
# print(f.read())
# f.close()
#功能詳解 read(這裡放數字,放幾就按照想要讀取的檔案(字元)最小單位讀取)
# f = open(‘log‘,mode=‘w+‘,encoding=‘utf-8‘)
# countent = f.read(2)
# print(countent)
#斷點續傳***** tell告訴你游標的位置,然後再seek把游標調到這個位置就可以實現斷點續傳
#f.readline()一行一行讀,只能讀第一行,想讀下面就調游標
#f。readlines()每一行當成列表中的一個元素,添加到列表中
#f.truncate(這裡填截取的數字)在原檔案檔案截取
#open開啟檔案是依賴了作業系統的提供的途徑
#作業系統有自己的編碼,open在開啟檔案的時候預設使用作業系統的編碼
#win gbk mac/linux utf-8
#習慣叫 f file f_obj f_handler fh
# print(f.writable()) #判斷檔案是否可寫
# print(f.readable()) #判斷檔案是否可讀
# f.write(‘7018201890‘) #寫檔案的時候需要寫數字,需要把數字轉換成字串
# f.write(‘aasjgdlwhoojfjdaj‘)
# f.write(‘iq349jdsh\n‘)
# f.write(‘aks‘)
# f.write(‘\nsdgawo‘) #檔案的換行
# f.write(‘志強德勝‘) #utf-8 unicode gbk
f.close()
#找到檔案詳解:檔案與py的執行檔案在相同路徑下,直接用檔案的名字就可以開啟檔案
#檔案與py的執行檔案不在相同路徑下,用絕對路徑找到檔案
#檔案的路徑,需要用取消轉譯的方式來表示:1.\\ 2.r‘‘
#如果以寫檔案的方式開啟一個檔案,那麼不存在的檔案會被建立,存在的檔案之前的內容會被清空
‘ \\n‘
f = open(r‘C:\Users\Administrator\Desktop\s8_tmp.txt‘,‘w‘,encoding=‘utf-8‘) #檔案路徑、操作模式、編碼
f.write(‘哈哈哈‘)
f.close()
#關閉檔案詳解
#作業系統層級的關閉檔案資源:f.close() 必須寫
#del f主動釋放了一個python程式記憶體中的變數 可寫可不寫
#1.讀檔案的第一種方式:read方法,用read方法會一次性的讀出檔案中的所有內容
2.讀一部分內容:read(n),指定讀n個單位
#3.讀檔案的第三種方式:按照行讀,每次執行readline就會往下讀一行
# content = f.readline()
#5.讀:最常用
f = open(‘歌詞‘,encoding=‘utf-8‘)
for l in f:
print(l.strip())
f = open(‘shoplist‘,encoding=‘utf-8‘) #讀檔案並整理成需要的資料類型
goods_list = []
for line in f:
if line.strip():
goods_dic = {‘name‘:None,‘price‘:None}
line = line.strip()
goods_lst = line.split()
print(goods_lst)
goods_dic[‘name‘] = goods_lst[0]
goods_dic[‘price‘] = goods_lst[1]
goods_list.append(goods_dic)
print(goods_list)
f.close()
# f = open(‘shoplist‘,encoding=‘utf-8‘) #只顯示檔案中有內容的行
# goods_list = []
# for line in f:
# if line.strip():
# print(line.strip())
# f.close()
# f = open(‘歌詞‘,‘rb‘)
# f.close()
#b:圖片、音樂、視頻等任何檔案
#傳輸:上傳、下載
#網路編程:
#修改檔案的編碼——非常不重要,不重要程度五顆星
#utf-8 用utf8的方式開啟一個檔案
#讀檔案裡的內容str
#將讀出來的內容轉換成gbk
#以gbk的方式開啟另一個檔案
#寫入
#a+
# f = open(‘shoplist‘,‘a+‘,encoding=‘utf-8‘)
# print(f.readable())
# f.write(‘\ncomputer 6000 5‘)
# f.write(‘\ncomputer 6000 5‘)
# f.write(‘\ncomputer 6000 5‘)
# f.write(‘\ncomputer 6000 5‘)
# f.close()
#1.被動接受知識 - 主動提出問題
#2.主動的找到問題,並且找到對應的解決方案
#3.主動的學習
# r+ 可讀可寫:
#1.先讀後寫:寫是追寫
#2.先寫後讀:從頭開始寫
# f = open(‘歌詞‘,‘r+‘,encoding=‘utf-8‘)
# line = f.readline()
# print(line)
# f.write(‘0000‘)
# f.close()
# w+ 可寫可讀:一上來檔案就清空了,
# 儘管可讀:1.但是你讀出來的內容是你這次開啟檔案新寫入的
# 2.游標在最後,需要主動移動游標才可讀
# f = open(‘歌詞‘,‘w+‘,encoding=‘utf-8‘)
# f.write(‘abc\n‘)
# f.write(‘及哈哈哈‘)
# f.seek(0)
# print(f.read())
# f.close()
# a+ 追加可讀
# f = open(‘歌詞‘,‘a+‘,encoding=‘utf-8‘)
# f.write(‘\nqq星‘)
# f.seek(0)
# print(f.read())
# f.close()
#一般情況下:檔案操作,要麼讀,要麼寫,很少會用到讀寫、寫讀同時用的
#常用的:
#r、w、a
#rb、wb、ab,不需要指定編碼了
#
# f = open(‘歌詞‘,‘rb‘)
# content = f.read()
# f.close()
# print(content)
# f2 = open(‘歌詞2‘,‘wb‘)
# f2.write(content)
# f2.close()
# print(‘readline : ‘,content.strip()) #strip去掉空格、定位字元、分行符號
# content2 = f.readline()
# print(content2.strip())
#4.讀檔案的第四種方式:readlines,返回一個列表,將檔案中的每一行作為列表中的每一項返回一個列表
f = open(‘歌詞‘,‘r+‘,encoding=‘utf-8‘)
#seek 游標移動到第幾個位元組的位置
# f.seek(0) 移動到最開始
# f.seek(0,2) 移動到最末尾
f.truncate(3) #從檔案開始的位置只保留指定位元組的內容
# f.write(‘我可寫了啊‘)
#tell 告訴我游標在第幾個位元組
#seek移動游標到指定位置
# content = f.readline()
# print(content.strip())
#tell告訴你當前游標所在的位置
# print(f.tell())
# f.seek(4) #游標移動到三個位元組的地方‘\r\n’
# content = f.read(1) #讀一個字元
# print(‘***‘,content,‘***‘)
# content = f.readline()
# print(content.strip())
# print(f.tell())
f.close()
#tell
#seek:去最開始、去最結尾
#truncate:保留n個位元組
python基礎之檔案操作