文件的基本操作
概念
- 在計(jì)算機(jī)中,文件是以 二進(jìn)制 的方式保存在磁盤(pán)上的
- 文本文件 和 二進(jìn)制文件
- 文件操作的三個(gè)步驟
- 打開(kāi)文件
- 讀、寫(xiě)文件
- 讀:將文件讀入內(nèi)存
- 寫(xiě):將內(nèi)存中的數(shù)據(jù)寫(xiě)入文件
- 關(guān)閉文件
操作文件的函數(shù)/方法
-
open 函數(shù)負(fù)責(zé)打開(kāi)文件,并且返回文件對(duì)象
- 如果文件存在,返回文件操作對(duì)象
- 如果文件不存在,會(huì)拋出異常
-
**read、write、close 需要文件對(duì)象來(lái)操作
**
函數(shù) | 說(shuō)明 |
---|---|
open | 打開(kāi)文件,并且返回文件操作對(duì)象 |
read | 將文件內(nèi)容讀取到內(nèi)存 |
write | 將內(nèi)存中的數(shù)據(jù)寫(xiě)入文件 |
close | 關(guān)閉文件 |
示例
-
新建一個(gè) aa.txt 文件,內(nèi)容如下
-
讀取代碼如下
# 打開(kāi)文件
file=open("aa.txt")
# 讀取文件
content=file.read()
print(content)
# 關(guān)閉文件,如果忘記關(guān)閉,會(huì)造系統(tǒng)資源消耗,影響后續(xù)訪(fǎng)問(wèn)
file.close()
注: 打開(kāi)文件后,當(dāng)操作完成后,一定要注意關(guān)閉,不然會(huì)造成資源消耗,影響后續(xù)對(duì)文件的訪(fǎng)問(wèn)
輸出結(jié)果
文件的打開(kāi)方式
open 函數(shù)默認(rèn)以 只讀方式 打開(kāi)文件,并返回文件對(duì)象
語(yǔ)法
file=open("文件名","訪(fǎng)問(wèn)方式")
訪(fǎng)問(wèn)方式 | 說(shuō)明 |
---|---|
r | 以只讀方式打開(kāi)文件,文件的指針會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式 |
w | 以只寫(xiě)方式打開(kāi)文件,如果文件存在會(huì)被覆蓋,不存在則會(huì)創(chuàng)建文件 |
a | 以追加方式打開(kāi)文件。如果文件存在,文件指針會(huì)在結(jié)尾,后續(xù)以追加內(nèi)容的方式進(jìn)行。如果文件不存在,則創(chuàng)建新文件進(jìn)行寫(xiě)入 |
r+ | 以讀寫(xiě)方式打開(kāi)文件,文件指針在開(kāi)頭。如果文件不存在,拋異常 |
w+ | 以讀寫(xiě)方式打開(kāi)文件。如果文件存在會(huì)被覆蓋。如果不存在,創(chuàng)建新文件 |
a+ | 以讀寫(xiě)方式打開(kāi)文件。如果文件存在則指針在文件結(jié)尾。如果不存在則創(chuàng)建新文件 |
**示例
**
# 寫(xiě)入文件
file=open("bb.txt","w")
# 寫(xiě)入內(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í)行后,會(huì)把** 文件指針 **移動(dòng)到下一行
with + open() 模式 (推薦使用)
- 這種模式下文件打開(kāi)之后不需要寫(xiě)入文件關(guān)閉函數(shù) close(),程序會(huì)在執(zhí)行完 with 結(jié)構(gòu)體中的程序后自動(dòng)關(guān)閉打開(kāi)的文件
示例:文件復(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ù),寫(xiě)入到文件
with open("cc.txt","w") as f:
for line in test_list:
f.write(line)
文件/目錄管理
在Python 中,如果希望對(duì) 文件或文件夾進(jìn)行 創(chuàng)建、重命名、刪除、查看 等操作,需要導(dǎo)入 os 模塊
**文件操作
**
方法名 | 說(shuō)明 | 示例 |
---|---|---|
rename | 重命名文件 | os.rename(源文件,目標(biāo)文件) |
remove | 刪除文件 | os.remove(文件名) |
mknod |
目錄操作
方法名 | 說(shuō)明 | 示例 |
---|---|---|
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(目錄路徑) |
注:對(duì)文件或者目錄的操作, 都支持 相對(duì)路徑 與 絕對(duì)路徑
**示例
**
import os
# 在當(dāng)前目錄下 創(chuàng)建一個(gè) 目錄 aaa
os.mkdir("aaa")
# 在 aaa 目錄下創(chuàng)建兩個(gè)文件
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)
文本文件的編碼
- 文本文件存儲(chǔ)的內(nèi)容是基于 字符編碼 的文件,常見(jiàn)的編碼有 ASCII 編碼,UNICODE 編碼等
- Python 3.x 默認(rèn)使用 UTF-8 編碼
- ASCII編碼
- 計(jì)算機(jī)中只有 256個(gè) ASCII 字符,一個(gè)ASCII在內(nèi)存中占用 1個(gè)字節(jié)的空間
- UTF-8 編碼
- 計(jì)算機(jī)中使用 1~6 個(gè)字節(jié)來(lái)表示一個(gè) UTF-8 字符,涵蓋了地球上幾乎所有地區(qū)的文字
- 大多數(shù)漢字會(huì)用 3個(gè)字節(jié)表示
- UTF-8 是 UNICODE 編碼的一種編碼格式
eval 函數(shù)
eval() 函數(shù)十分強(qiáng)大,將字符串 當(dāng)成 有效的表達(dá)式 來(lái)求值 并返回計(jì)算結(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文章
761瀏覽量
41475 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7168瀏覽量
87142 -
文件
+關(guān)注
關(guān)注
1文章
551瀏覽量
24559
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論