文件的知識(shí)點(diǎn)
知識(shí)點(diǎn)一.如何打開文件
f = open('demo.txt', 'r', encoding='utf-8') #以只讀的形式打開
# 讀取文件內(nèi)容
print(f.read())
# 關(guān)閉文件
f.close()
另一種方式,使用'w+'模式打開文件,允許讀寫
f = open('demo001.txt', 'w+')
f.write('hello world') #寫入 hello world
print(f.tell()) # 輸出當(dāng)前文件指針位置
f.seek(0) # 將文件指針移動(dòng)到文件開頭
print(f.read()) # 讀取文件內(nèi)容
f.close()
使用'w+'模式寫入多行
f = open('test2.txt', 'w+')
print(f.write("hello world\n"))
print(f.write("hello \nworld"))
f.close()
使用'a'模式追加內(nèi)容
f = open('test2.txt', 'a')
f.write("\npython")
f.close()
讀取文件內(nèi)容并寫入到另一個(gè)文件
f1 = open('test2.txt', 'r')
a = f1.readlines()
f2 = open('demo001', 'w')
f2.writelines(a) #將f2的內(nèi)容寫入f1中
f1.close()
f2.close()
使用with語句自動(dòng)管理文件關(guān)閉
with open('test2.txt', 'r') as f3: f3為一個(gè)對(duì)象
print(f3.read())
知識(shí)點(diǎn)二.OS模塊(重要 難點(diǎn))
Python文件路徑與操作筆記
-
絕對(duì)路徑與相對(duì)路徑
-
絕對(duì)路徑:從根目錄(或特定參考點(diǎn))開始的! 完整!路徑,例如 E:\class_45\011.文件\os模塊.py。
-
相對(duì)路徑:相對(duì)于當(dāng)前工作目錄的路徑,例如如果當(dāng)前工作目錄是 E:\class_45,那么 011.文件\os模塊.py 就是相對(duì)路徑。
示例地址
示例地址(相對(duì)路徑):重慶市南岸區(qū) #這是基于你當(dāng)前路徑
示例文件路徑(絕對(duì)路徑):E:\class_45\011.文件\os模塊.py
Python中與路徑操作相關(guān)的模塊
-
os模塊
- os.getcwd() 顯示當(dāng)前路徑
- listdir(path) 展示當(dāng)前目錄內(nèi)容
- os.chdir(path) 改變當(dāng)前路徑
- os.mkdir(文件名) 創(chuàng)建目錄
- os.rmdir(文件名) 刪除目錄
- os.system() 使用Linux命令
- os.remove(文件名) 刪除文件
- os.rename 重命名
路徑的拼接
# 正確的路徑拼接方式
import os
path = os.path.join('C:', 'Users', 'tongyao')
print(path) # 輸出: C:\Users\tongyao
# b = '\\'.join(['C:Users','tongyao']) # 錯(cuò)誤的方式
文件夾的創(chuàng)建
import os
#用循環(huán)批量創(chuàng)建文件夾
for i in range(20):
os.mkdir('tongyao'+str(i))
#判斷文件夾是否存在 存在則創(chuàng)建 反之亦然
if not os.path.exists(new_file):
os.mkdir(new_file) #存在則創(chuàng)建
os.chdir(path) 改變當(dāng)前路徑 path為改變的路徑
import os
os.chdir(path)
os.rmdir(文件名) 刪除目錄
###os.rmdir(path)
os.system(+linux命令) 使用Linux命令 shell 編程
import os
os.system("ls")
os.remove(文件名) 刪除文件 與rmdir不同
os.rename 重命名
import os
os.rename(old_file,new_file) # 舊文件名,新文件名
-
os.path 模塊
- os.path.join(path1,path2......) 路徑拼接
- os.path.dirname 所在的目錄、父級(jí)目錄
- os.path.basename 基本短路徑
- os.path.abspath 絕對(duì)路徑
- os.path.relpath 相對(duì)路徑
- os.path.getsize 資源大小
- os.path.exists 路徑是否存在
- so.path.isdir 是否是目錄
- os.path.isfile 是否是文件
- os.path.isabs 是否是絕對(duì)路徑
- os.path.getctime、getatime、getmtime 資源時(shí)間:創(chuàng)建、訪問、修改
路徑拼接
- os.path.join(path1, path2, ...):
該函數(shù)用于將多個(gè)路徑組件合并成一個(gè)路徑。
import os
path = os.path.join('usr', 'bin', 'python3')
print(path) # ,如:
#'usr\\bin\\python3'
目錄和文件名操作
- os.path.dirname(path):
返回所選路徑的最后一個(gè)目錄的父目錄。
import os
dirname = os.path.dirname('/usr/bin/python3')
print(dirname) # 輸出: /usr/bin
- os.path.basename(path):
返回給定路徑的基本名(即最后一級(jí)目錄的文件名)
import os
basename = os.path.basename('/usr/bin/python3')
print(basename) # 輸出: python3
路徑的絕對(duì)與相對(duì) abs 絕對(duì)
- os.path.abspath(path):
返回給定路徑的絕對(duì)路徑。
import os
abspath = os.path.abspath('.') # . 表示當(dāng)前目錄 也可以輸入相對(duì)路徑
print(abspath) # 輸出當(dāng)前工作目錄的絕對(duì)路徑
- os.path.relpath(end path, start path):
返回從start路徑到path的相對(duì)路徑。
import os
relpath = os.path.relpath('/usr/bin/python3', '/usr')
print(relpath) # 輸出: bin/python3
文件和目錄屬性
- os.path.getsize(path):
返回指定路徑的文件大?。ㄒ宰止?jié)為單位)。
import os
size = os.path.getsize('/usr/bin/python3')
print(size) # 輸出文件大小
- os.path.exists(path):
檢查路徑是否存在。
import os
exists = os.path.exists('/usr/bin/python3')
print(exists) # 輸出: True 或 False
- os.path.isdir(path) 和 os.path.isfile(path):
分別檢查給定路徑是否是一個(gè)目錄或文件。
import os
isdir = os.path.isdir('/usr/bin') #檢查是否是一個(gè)目錄
isfile = os.path.isfile('/usr/bin/python3') #檢查是否是一個(gè)文件
print(isdir) # 輸出: True 或 False
print(isfile) # 輸出: True 或 False
- os.path.isabs(path):
檢查路徑是否為絕對(duì)路徑。
import os
isabs = os.path.isabs('/usr/bin/python3') #檢查目錄是否有子目錄
print(isabs) # 輸出: True
文件的時(shí)間屬性
- os.path.getctime(path)、
- os.path.getatime(path)、
- os.path.getmtime(path):
分別返回文件的創(chuàng)建時(shí)間、最后訪問時(shí)間和最后修改時(shí)間(以秒為單位,自紀(jì)元以來的時(shí)間戳)。
import os
ctime = os.path.getctime('/usr/bin/python3')
atime = os.path.getatime('/usr/bin/python3')
mtime = os.path.getmtime('/usr/bin/python3')
print(ctime) #輸出文件的最后創(chuàng)建的時(shí)間
print(atime) #輸出文件的最后訪問的時(shí)間
print(mtime) # 輸出文件的最后修改的時(shí)間 且時(shí)間為時(shí)間戳
知識(shí)點(diǎn)三:stringIO與bytesIO
- io Input/Output 輸入,輸出
假的文件 臨時(shí)文件 內(nèi)存中讀數(shù)據(jù)是非??斓?/h4>
io可以臨時(shí)儲(chǔ)存一些東西
------字符串
import io
myio = io.StringIO() # 創(chuàng)建一個(gè)對(duì)象進(jìn)行保存讀取
myio.write('hello')
# myio.seek(0)
print(myio.readlins())
print(myio.getvalue())
臨時(shí)的
myio.close() # 雖然關(guān)閉對(duì)象后,內(nèi)存中的數(shù)據(jù)不會(huì)立即消失(由Python的垃圾回收機(jī)制處理),但良好的實(shí)踐是完成操作后關(guān)閉它。
------字節(jié)
bio = io.BytesIO()
bio.write(b'hahhaha')
print(bio.getvalue()) #輸出:b'hahhaha' 注意此處的b不能少
bio.close() #關(guān)閉bio
byte_str = b'fdsfdsafds'
text_str = byte_str.decode('utf-8')
print(text_str) # 輸出: fdsfdsafds,沒有b前綴
#當(dāng)你看到在Python中打印出的字節(jié)串(如b'fdsfdsafds')時(shí),前綴b是Python解釋器用來區(qū)分字節(jié)串(bytes)和文本字符串(str)的一種方式。這個(gè)b前綴并不是字節(jié)串?dāng)?shù)據(jù)的一部分,它只是在打印或者表示字節(jié)串時(shí)被Python解釋器自動(dòng)添加的。