文件的基本操作 1.打開文件 2.讀寫文件 讀:將文件內(nèi)容寫入內(nèi)存 寫:將內(nèi)存的數(shù)據(jù)寫入文件中 3.關閉文件
在python操作文件通常使用4個函數(shù)(方法) 1.open 打開文件,返回文件操作的對象 2.read 讀文件,將文件內(nèi)容寫入內(nèi)存 3.write 寫文件 4.close 關閉文件
文件的打開方式只要有兩種
第一種,使用open直接打開
#路徑有絕對路徑和相對路徑
f = open("C:/Users/dj-yz/Desktop/text.txt",encoding='utf-8')
#對于文件操作來說,默認模式只是一個r,只讀!!!
file_text = f.read()
第二種,使用語法糖,with關鍵字
#文件的打開方式 with語法糖,不用手動 close
with open("C:/Users/dj-yz/Desktop/text.txt",encoding='utf-8') as f1:
print(f1.read())
對文件進行操作:
- r:只讀操作(默認模式)
- w:只寫操作,如果文件存在,首先會清空源件的數(shù)據(jù),文件指針放在文件頭.如果文件不存在,則創(chuàng)建一個新文件
- a:追加操作,文件指針放在文件的末尾
- r+:以讀寫的方式打開文件,文件指針放在文件的頭部。如果文件不存在,會拋出異常。
- w+:以讀寫的方式打開文件,文件指針放在文件開頭,如果文件存在,首先會清空源件的數(shù)據(jù)。
- rb:以二進制(字節(jié))的格式打開一個文件,文件指針放在文件的頭部。如果文件不存在,會拋出異常。
- wb:以二進制(字節(jié))的格式寫入一個文件,文件指針放在文件開頭,如果文件存在,首先會清空源件的
- a+:以讀寫的方式打開文件
文件指針--光標,標記了從那個位置開始讀取數(shù)據(jù)
# f = open("C:/Users/dj-yz/Desktop/text.txt",encoding='utf-8',"w")
# f = open("C:/Users/dj-yz/Desktop/text.txt","a",encoding='utf-8')
# #文件指針--光標,標記了從那個位置開始讀取數(shù)據(jù)
# #第一次打開文件時,通常文件指針會指向文件的開始位置
# f.write("未婚")
# f = open("C:/Users/dj-yz/Desktop/text.txt",encoding='utf-8')
# file_text = f.read()
# file_text2 = f.read()
# #光標移動到數(shù)據(jù)的末尾,再次讀取內(nèi)容為空
# print(file_text2)
r+對文件進行讀寫操作
f = open("C:/Users/dj-yz/Desktop/text.txt","r+",encoding='utf-8')
file_text = f.read()
file_text
w+讀的時候會清空文件中的數(shù)據(jù),a+則不會
f = open("C:/Users/dj-yz/Desktop/text.txt","w+",encoding='utf-8')
file_text = f.read()
print(file_text)
f.close
讀取一行,設置光標位置,指定讀取字符的數(shù)量
#讀取一行
f = open("C:/Users/dj-yz/Desktop/text.txt",encoding='utf-8')
#設置光標位置
f.seek(2)
# 指定讀取字符的數(shù)量
f.read(6)
f2 = f.readline()
print(f2)
f.close
# 讀取所有行
f = open("C:/Users/dj-yz/Desktop/text.txt",encoding='utf-8')
f2 = f.readlines()
print(f2)
對文件進行復制操作
f = open("C:/Users/dj-yz/Desktop/text.txt",encoding='utf-8')
f2 = open("C:/Users/dj-yz/Desktop/text_copy.txt","w",encoding='utf-8')
content = f.read()
f2.write(content)
f.close()
f2.close()
如果文件比較大,可以使用循環(huán),一行一行寫入
f = open("C:/Users/dj-yz/Desktop/text.txt",encoding='utf-8')
f2 = open("C:/Users/dj-yz/Desktop/text_copy.txt","w",encoding='utf-8')
while True:
content = f.readline()
if not content:
break
f2.write(content)
f.close()
f2.close()
文本和字節(jié)的轉(zhuǎn)換
#文本和字節(jié)的轉(zhuǎn)換
str = "hello"
#encode - 將字符串進行編碼生成對應的字節(jié)
s1 = str.encode('utf-8')
#decode - 解碼:將字節(jié)轉(zhuǎn)為字符串
s2 =s1.decode("gbk")
print(s2)