文件的基本操作
概念
- 在計算機中,文件是以 二進(jìn)制 的方式保存在磁盤上的
- 文本文件 和 二進(jìn)制文件
- 文件操作的三個步驟
- 打開文件
- 讀、寫文件
- 讀:將文件讀入內(nèi)存
- 寫:將內(nèi)存中的數(shù)據(jù)寫入文件
- 關(guān)閉文件
操作文件的函數(shù)/方法
函數(shù) | 說明 |
---|---|
open | 打開文件,并且返回文件操作對象 |
read | 將文件內(nèi)容讀取到內(nèi)存 |
write | 將內(nèi)存中的數(shù)據(jù)寫入文件 |
close | 關(guān)閉文件 |
示例
-
新建一個 aa.txt 文件,內(nèi)容如下
-
讀取代碼如下
# 打開文件
file=open("aa.txt")
# 讀取文件
content=file.read()
print(content)
# 關(guān)閉文件,如果忘記關(guān)閉,會造系統(tǒng)資源消耗,影響后續(xù)訪問
file.close()
注: 打開文件后,當(dāng)操作完成后,一定要注意關(guān)閉,不然會造成資源消耗,影響后續(xù)對文件的訪問
輸出結(jié)果
文件的打開方式
open 函數(shù)默認(rèn)以 只讀方式 打開文件,并返回文件對象
語法
file=open("文件名","訪問方式")
訪問方式 | 說明 |
---|---|
r | 以只讀方式打開文件,文件的指針會放在文件的開頭。這是默認(rèn)模式 |
w | 以只寫方式打開文件,如果文件存在會被覆蓋,不存在則會創(chuàng)建文件 |
a | 以追加方式打開文件。如果文件存在,文件指針會在結(jié)尾,后續(xù)以追加內(nèi)容的方式進(jìn)行。如果文件不存在,則創(chuàng)建新文件進(jìn)行寫入 |
r+ | 以讀寫方式打開文件,文件指針在開頭。如果文件不存在,拋異常 |
w+ | 以讀寫方式打開文件。如果文件存在會被覆蓋。如果不存在,創(chuàng)建新文件 |
a+ | 以讀寫方式打開文件。如果文件存在則指針在文件結(jié)尾。如果不存在則創(chuàng)建新文件 |
**示例
**
# 寫入文件
file=open("bb.txt","w")
# 寫入內(nèi)容
file.write("aaaaaaaa")
# 關(guān)閉文件
file.close()
# 追加內(nèi)容
file=open("bb.txt","a")
file.write("ccccccc")
file.close()
輸出結(jié)果
**按行讀取內(nèi)容
**
- readling 方法可以一次讀取一行內(nèi)容
- 方法執(zhí)行后,會把** 文件指針 **移動到下一行
with + open() 模式 (推薦使用)
- 這種模式下文件打開之后不需要寫入文件關(guān)閉函數(shù) close(),程序會在執(zhí)行完 with 結(jié)構(gòu)體中的程序后自動關(guān)閉打開的文件
示例:文件復(fù)制
test_list=[]
# 讀取文件數(shù)據(jù)到內(nèi)存
with open("aa.txt","r") as f:
# 讀取所有行
for line in f.readlines():
test_list.append(line)
# 從內(nèi)存讀取數(shù)據(jù),寫入到文件
with open("cc.txt","w") as f:
for line in test_list:
f.write(line)
文件/目錄管理
在Python 中,如果希望對 文件或文件夾進(jìn)行 創(chuàng)建、重命名、刪除、查看 等操作,需要導(dǎo)入 os 模塊
**文件操作
**
方法名 | 說明 | 示例 |
---|---|---|
rename | 重命名文件 | os.rename(源文件,目標(biāo)文件) |
remove | 刪除文件 | os.remove(文件名) |
mknod |
目錄操作
方法名 | 說明 | 示例 |
---|---|---|
listdir | 目錄列表 | os.listdir(目錄名) |
mkdir | 創(chuàng)建目錄 | os.mkdir(目錄名) |
rmdir | 刪除目錄 | os.rmdir(目錄名) |
getcwd | 獲取當(dāng)前目錄 | os.getcwd() |
chdir | 修改工作目錄 | os.chdir(目標(biāo)目錄) |
path.isdir | 判斷是否是目錄 | os.path.isdir(目錄路徑) |
注:對文件或者目錄的操作, 都支持 相對路徑 與 絕對路徑
**示例
**
import os
# 在當(dāng)前目錄下 創(chuàng)建一個 目錄 aaa
os.mkdir("aaa")
# 在 aaa 目錄下創(chuàng)建兩個文件
with open("aaa/aaa.txt","w") as f:
f.write("hhhhhhhhhhhh")
with open("aaa/bbb.txt","w") as f:
f.write("ddddddddddddd")
# 獲取當(dāng)前目錄
dirpwd = os.getcwd()
print(dirpwd)
文本文件的編碼
- 文本文件存儲的內(nèi)容是基于 字符編碼 的文件,常見的編碼有 ASCII 編碼,UNICODE 編碼等
- Python 3.x 默認(rèn)使用 UTF-8 編碼
- ASCII編碼
- 計算機中只有 256個 ASCII 字符,一個ASCII在內(nèi)存中占用 1個字節(jié)的空間
- UTF-8 編碼
- 計算機中使用 1~6 個字節(jié)來表示一個 UTF-8 字符,涵蓋了地球上幾乎所有地區(qū)的文字
- 大多數(shù)漢字會用 3個字節(jié)表示
- UTF-8 是 UNICODE 編碼的一種編碼格式
eval 函數(shù)
eval() 函數(shù)十分強大,將字符串 當(dāng)成 有效的表達(dá)式 來求值 并返回計算結(jié)果
示例
# 解析字符串的 數(shù)字相加
print(eval("1+2"))
# 解析 列表
print(eval("[1,3,4,5,5]"))
print(type(eval("[1,3,4,5,5]")))
# 解析 字典
print(eval("{'aaa':1,'bbb':2}"))
print(type(eval("{'aaa':1,'bbb':2}")))
輸出結(jié)果
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
795瀏覽量
41643 -
計算機
+關(guān)注
關(guān)注
19文章
7488瀏覽量
87852 -
文件
+關(guān)注
關(guān)注
1文章
565瀏覽量
24727
發(fā)布評論請先 登錄
相關(guān)推薦
評論