python基礎11——檔案處理補充
檔案操作的簡單方法
控制檔案內指標的移動
檔案開啟模式分類兩大類
1、 r:唯讀
在檔案不存在時則報錯,檔案存在時檔案指標會跳到檔案開頭
f = open('a.txt', mode='rt', encoding='utf-8')
res = f.read()
print(f.readable())
print(f.writable())
f.close()
2、 w:只寫
在檔案不存在時則建立空檔案,檔案存在時則清空檔案指標跳到檔案開頭
f = open('b.txt', mode='wt', encoding='utf-8')
f.write("egon:123")
f.close()
3、a:只追加寫
在檔案不存在時則建立空檔案,檔案存在時不會清空,檔案指標跳到檔案末尾
f = open('c.txt', mode='at', encoding='utf-8')
f.write("jason:777\n")
f.close()
總結:w與a的異同
相同點: 在開啟了檔案不關閉的情況下,連續的寫入,新的內容永遠跟內容1、 t不同點:重新開啟檔案,w會清空老的內容,而a模式會保留老的內容並且指標跳到檔案末尾
讀寫都是以str字串為單位,一定要指定encoding
f = open('a.txt',mode='rt', encoding='utf-8')
#f.read()
#f.close()
2、 b
讀寫都是以bytes為單位
f = open('a.txt', mode='rb')
data = f.read()
#print(data.type(data))
print(data.decode('utf-8'))
f.close()
f= open('d.txt', mode='wb')
f.write("egon".encode('utf-8'))
f.close()
示範1:檔案拷貝程式
src_file = input("原始檔路徑:").strip()
dst_file = input("目標檔案路徑:").strip()
f = open(r"%s" %src_file,mode='rb')
data = f.read()
f.close()
new_f = open(r"%s" %dst_file,mode='wb')
new_f.write(data)
new_f.close()
#上下問管理with方式
src_file = input("原始檔路徑:").strip()
dst_file = input("目標檔案路徑:").strip()
with open(r'%s' %src_file,mode='rb') as src_fobj,open(r'%s' %dst_file,mode='wb') as dst_fobj:
# data=src_fobj.read()
for line in src_fobj: # line=第二行內容
dst_fobj.write(line)
了解:
+模式:+不能單獨使用,必須配合r、w、a
r+模式:檔案不存在,則會報錯
w+模式:檔案不存在,則會建立新檔案
r+模式:檔案不存在,則會報錯
f.read() # 讀取所有內容,執行完該操作後,檔案指標會移動到檔案末尾f.readline() # 一次讀取一行內容,游標移動到第二行首部
with open('a.txt',mode='rt', encoding='utf-8') as f:
# line1 = f.readline()
# line2 = f.readline()
# line3 = f.readline()
# print(line1)
# print(line2)
# print(line3)
# lines =
# for line in f:
lines = f.readlines()
print(lines)
強調:
f.read()與f.readlines()都是將內容一次性讀入內容,如果內容過大會導致記憶體溢位,若還想將內容全讀入記憶體,則必須分多次讀入,有兩種實現方式:方式一
with open('a.txt',mode='rt',encoding='utf-8') as f:
for line in f:
print(line) # 同一時刻唯讀入一行內容到記憶體中
方式二
with open('1.mp4',mode='rb') as f:
while true:
data=f.read(1024) # 同一時刻唯讀入1024個bytes到記憶體中
if len(data) == 0:
break
print(data)
with open('a.txt',mode='rt', encoding='utf-8') as f:
# lines = ['111\n','222\n','333\n']
# for line in lines:
# lines.write(line)
# f.writelines()
f.writelines("hello")
了解
f.readable() # 檔案是否可讀f.writable() # 檔案是否可讀
f.closed # 檔案是否關閉
f.encoding # 如果檔案開啟模式為b,則沒有該屬性
f.flush() # 立刻將檔案內容從記憶體刷到硬碟
都是以位元組為單位的,只有乙個特殊情況t模式下的read(n)#代表的是n個字元,其餘的都是位元組
with open('f.txt',mode='rt',encoding='utf-8') as f:
data=f.read(6) # 6個字元
print(data)
with open('f.txt',mode='rb') as f:
# data=f.read(6) # 6個位元組
data=f.read(8) # 8個位元組
print(data.decode('utf-8'))
f.seek(指標移動的位元組數,模式控制):
模式控制:
0:參照檔案的開頭開始移動(只有0模式可以在t下使用,1和2模式只能在操作需要)
with open('f.txt', mode='rt', encoding='utf-8') as f:
f.seek(5,0)
print(f.tell())
print(f.read(9))
1:該模式參照指標當前所在的位置
with open('f.txt',mode='rb') as f:
f.seek(3,1)
f.seek(3,1)
print(f.tell())
# f.seek(2,1)
f.seek(5,0)
print(f.read().decode('utf-8'))
2:該模式參照檔案末尾的位置
with open('f.txt',mode='rb') as f:
f.seek(0,2)
f.seek(-3,2)
# print(f.tell())
print(f.read().decode('utf-8'))
強調:其中0模式可以在t或者b模式使用,而1跟2模式只能在b模式下用f.truncate(n)從檔案開頭往後數n個位元組保留下來,其餘全部刪除
f.truncate()從檔案開頭往後數指標當前所在的位置,其餘全部刪除
with open('f.txt',mode='ab') as f:
# f.truncate(3)
# f.seek(-3,2)
f.truncate()
python學習11 檔案,流
開啟檔案 語法如下 open name,module buffering 模式 和緩衝引數都是可選的 f open r c text somefile.txt 如果檔案不存在traceback most recent call last file line 1,in f open r c text ...
python學習11 檔案操作
1.檔案 open file,mode r buffering 1,encoding none,errors none,newline none,closefd true,opener none file 檔案路徑 其中雙斜槓表示轉義也可以用反斜槓代替這兩個斜槓。mode 開啟方式 其中 w表示先將...
Python資料科學基礎(七) 檔案處理
檔案處理 1.檔案操作三步走 開啟 讀寫 關閉。open file,mode r buffering 1,encoding none,errors none,newline none,closefd true,opener none 2.檔案開啟模式模式 說明r讀模式 預設模式,可省略 如果檔案不存...