相對路徑和絕對路徑python
在編程中,建議使用相對路徑編程
操做文件的兩種方法工具
open學習
語法:f = open('文件名路徑',mode,encoding)
,用於打開文件。編碼
文件路徑:建議使用相對路徑操作系統
mode:打開文件的模式,有三種,分別是:r
、w
、a
。通常和處理文件的兩個模式套用。指針
處理文件的兩種模式是:t
和 b
。code
encoding:打開文件,操做文件內容的編碼設置對象
# 第一種打開方式,這種打開方式,必須使用f.close()來關閉系統資源 f = open("a.txt","r",encoding="utf-8") data = f.read() # 讀取a.txt 文件中的所有內容 print(data) # 打印文件中的內容 f.close() # 關閉操做系統資源
模式 | 描述 | 特色 |
---|---|---|
rt | 默認模式,可簡寫爲 r 。以文本文件且只讀的模式打開文件 |
若是文件不存在,報錯 |
wt | 可簡寫爲 w 。以文本文件且只寫模式打開文件 |
若是文件不存在,建立一個新文件;若是文件中存在數據,重寫文件中的內容 |
at | 可簡寫爲 a ,以文本文件且只寫模式打開文件 |
若是文件不存在,建立一個新文件;若是文件中存在數據,在數據後追加內容。 |
rb | 以二進制字符且只讀的模式打開文件 | 若是文件不存在,報錯 |
wb | 以二進制字符且只寫的模式打開文件 | 若是文件不存在,建立一個新文件;若是文件中存在數據,重寫文件中的內容 |
ab | 以二進制字符且只寫的模式打開文件 | 若是文件不存在,建立一個新文件;若是文件中存在數據,在數據後追加內容。 |
with open() as …:blog
語法:with open("文件名路徑",mode,encoding)as f:
建議使用這種方式對文件進行操做,上下文關聯打開文件。優勢:不只會自動回收系統資源,且能夠同時打開多模式下的同一文件或多個文件。
# 第二種打開方式,上下文關聯方式,會自動關閉系統資源,建議使用這種方式 with open("a.txt","r",encoding="utf-8") as f: data = f.read() print(data) # 同時打開多個文件,用逗號分隔開 with open("a.txt","r",encoding="utf-8")as rf,\ open("b.txt","w",encoding="utf-8") as wf: data = f.read() wf.write(data)
文件處理的內置方法
# a.txt 文件中的內容 姓名:sean 年齡:18 性別:男 描述:上海校區最帥的人
讀
語法 | 說明 |
---|---|
f.read() | 默認一次性讀取出全部的文件內容;參數根據mode的模式,若是是 t ,讀取文件的字符個數;若是是 b ,讀取文件的字節數 |
f.readline() | 一次只能讀取一行內容 |
f.readlines() | 將數據所有讀入內存中,以換行符分隔存入列表中 |
f.readable() | 判斷文件是否可讀,返回布爾值 |
# 模式爲:只讀文本模式,r=rt 是read text with open("a.txt","r",encoding="utf-8") as f: print(f.readable()) # 打印結果爲:True print(f.readline()) # 打印結果爲:姓名:sean print(f.readlines()) # 打印結果爲:列表['年齡:18\n', '性別:男\n', '描述:上海校區最自戀的人'] f.seek(0,0) # 將光標移動到文件的開始 print(f.read()) # 打印結果爲:全部的內容
# 模式爲:只讀字節模式,rb 是read bytes。注意:使用字節模式,encoding參數不可用 with open("c.txt","rb") as f: print(f"readable的結果:{f.readable()}") # 打印結果:True print(f"read的結果:{f.read()}") # 打印結果:文件全部內容的二進制字節 f.seek(0,0) # 將光標移動到文件的開始 print(f"readline的結果:{f.readline()}") # 打印結果:文件內容第一行記錄的二進制字節 f.seek(0,0) print(f"readline的結果:{f.readlines()}") # 打印結果:列表形式的二進制字節
打印結果:
寫
語法 | 說明 |
---|---|
f.write() | 將數據寫入文件 |
f.writelines | 將可迭代對象的元素以字符串形式寫入文件。等價於for+write() |
f.writeable | 判斷文件是否可寫,返回布爾值 |
# 只寫文本模式,將文件中的原內容清空,重寫了新的內容 with open(r"a.txt","w",encoding="utf-8") as wf: print(f"是否可讀:{wf.readable()}") print(f"是否可寫:{wf.writable()}") wf.write("這是使用write新寫入的內容\n") wf.writelines(["這是使用writelines新寫入的內容1\n","這是使用writelines新寫入的內容2\n","這是使用writelines新寫入的內容3\n"]) # 列表中的內容會拼接起來寫入文件中 # 驗證是否將內容寫入到a.txt 文件中 with open(r"a.txt","r",encoding="utf-8") as rf: print(rf.read())
操做結果
# 追加文本模式,保留文件中原來的內容,並在後面追加新的數據 with open(r"a.txt","a",encoding="utf-8") as af: print(f"是否可讀:{af.readable()}") print(f"是否可寫:{af.writable()}") af.write("這是使用追加模式write寫入的內容\n") af.writelines(["這是使用追加模式writelines新寫入的內容1\n","這是使用追加模式writelines新寫入的內容2\n","這是使用追加模式writelines新寫入的內容3\n"]) # 驗證是否將內容寫入到a.txt 文件中 with open(r"a.txt","r",encoding="utf-8") as rf: print(rf.read())
操做結果
光標(指針)的操做
語法 | 描述 |
---|---|
f.seek(offset,whence) | offsetf:相對偏移度,也就是光標移動的位數,針對的是字節; whence:用於指定光標位置從哪裏開始。 值只能是:0(文件開頭),1(當前位置),2(文件末尾)。 |
f.tell() | 光標所在的位置 |
3bytes
,英文字符佔1bytes
2bytes
,英文字符佔1bytes
#### 擴展
咱們學習的讀取文件 r
、w
、a
是純淨模式,還有 r+
、w+
、a+
模式。這三種模式設置成了可讀可寫模式,其餘特性跟純淨模式是同樣的。