標籤:讀取 作業系統 使用者 raw 指定 python 字元編碼 end 相對路徑
檔案:
檔案是作業系統為使用者或應用程式提供的一個讀寫硬碟的虛擬單位
檔案的操作核心就:讀、寫
即我們只需要對於進行讀寫操作,就是對作業系統發起請求,然後由作業系統將使用者或者應用程式
對檔案的讀寫操作轉換成具體的硬碟指令(比如控制碟片轉動,控制機械手臂移動來讀寫資料)
因為記憶體無法永久儲存資料,但凡我們想要永久儲存資料都需要儲存到硬碟中,
而操作檔案就可以實現對硬體的操作
# 把硬碟中的資料讀到記憶體中
#rawstring
f=open(r‘E:\SH_fullstack_s2\day08\a.txt‘,mode=‘r‘) # 向作業系統發起請求,要求作業系統開啟檔案,佔用作業系統的資源
data=f.read() # 向作業系統開啟發起讀請求,會被作業系統轉成具體的硬碟操作,將內容由硬碟讀入記憶體
print(data)
f.close() #向作業系統發起請求,要求作業系統關閉檔案,回收系統資源
# 總結:
#1、開啟檔案
#2、讀寫
#3、關閉
#1、絕對路徑:從盤符(C:\\ E:\\ D:\\)開始寫一個完整的路徑
#2、相對路徑:相對於當前執行檔案所在的檔案夾開始找
f=open(r‘a\a.txt‘)
# 控制讀寫檔案內容的結果有兩種:t模式text,b模型bytes
#注意:
#1、t與b這兩種模式均不能單獨使用,都需要與r/w/a之一連用
#2、預設的內容格式是t
#3、只有文字檔才能用t模式,也只有文字檔才有字元編碼的概念
# 操作檔案的基礎模式有三種:
#1、r,預設的
#2、w
#3、a
#r:read,唯讀模式
#1、只能讀,不能寫
#2、在檔案不存在時,會報錯,在檔案存在的時候會將檔案指標移動到開頭
# f=open(r‘b.txt‘,mode=‘rt‘,encoding=‘utf-8‘)
# data1=f.read()
# print(‘第一次:‘,data1)
# # print(type(data1))
#
# # data2=f.read()
# # print(‘第二次:‘,data2)
# f.close()
# f=open(r‘b.txt‘,mode=‘rt‘,encoding=‘utf-8‘)
# data2=f.read()
# print(‘第二次:‘,data2)
# f.close()
# f=open(r‘b.txt‘,mode=‘rt‘,encoding=‘utf-8‘)
# # print(f.readable())
# # print(f.readline(),end=‘‘)
# # print(f.readline(),end=‘‘)
#
# lines=f.readlines()
# print(lines)
# f.close()
#
#w:唯寫模式
#1、只能寫,不能讀
#2、在檔案不存在時會建立空檔案,在檔案存在的時候會將檔案內容清空
# f=open(r‘c.txt‘,mode=‘wt‘,encoding=‘utf-8‘)
# # print(f.readable())
# # f.read()
# # f.write(‘你好啊我的天\n你好啊我的地\n啊啊啊啊啊啊\n‘)
# # f.write(‘4444\n‘)
# # f.write(‘5555‘)
#
# lines=[‘1111\n‘,‘2222\n‘,‘33333\n‘]
# # for line in lines:
# # f.write(line)
# f.writelines(lines)
#
# f.close()
#a:只追加寫入模式
#1、只能寫,不能讀
#2、在檔案不存在時會建立空檔案,在檔案存在的時候會將指標移動到檔案末尾
# f=open(‘d.txt‘,mode=‘at‘,encoding=‘utf-8‘)
# print(f.readable())
# f.read()
# f.write(‘555555\n6666\n‘)
# f.writelines([‘77777\n‘,‘8888888\n‘,‘999999999\n‘])
# f.close()
#b:二進位模式
#注意:
#1、一定不能指定字元編碼,只有t模式才與字元編碼有關
#2、b是二進位模式,是一種通用的檔案讀模數式,因為所有的檔案在硬碟中都是以二進位形式存放的
# f=open(‘egon.jpg‘,‘rb‘)
# data=f.read()
# print(type(data))
# f.close()
# f=open(‘oldsiji.mp4‘,‘rb‘)
# data=f.read()
# f.close()
# f=open(r‘F:\oldsiji.mp4‘,‘wb‘)
# f.write(data)
# f.close()
# 迴圈讀
# f=open(‘d.txt‘,‘rt‘,encoding=‘utf-8‘)
# for line in f:
# print(line)
# f.close()
# f=open(‘d.txt‘,‘rb‘)
# for line in f:
# print(line)
# f.close()
# f=open(‘oldsiji.mp4‘,‘rb‘)
# for line in f:
# print(line)
# f.close()
# f=open(‘e.txt‘,‘wb‘)
# f.write(‘你好啊‘.encode(‘utf-8‘))
#
# f.close()
# f=open(‘e.txt‘,‘ab‘)
# f.write(‘大家好,我是egon‘.encode(‘utf-8‘))
# f.close()
# 上下文管理
# with open(‘e.txt‘,‘rb‘) as f,open(‘j.txt‘,‘wt‘,encoding=‘utf-8‘) as f1:
# #檔案的操作
# src_data=f.read()
# res=src_data.decode(‘utf-8‘)
# # print(res,type(res))
# f1.write(res)
with open(‘e.txt‘,‘rb‘) as f,\
open(‘j.txt‘,‘wb‘) as f1:
#檔案的操作
f1.write(f.read())
Python檔案處理