微吼云上線多路互動直播服務 加速多場景互動直播落地
922
2025-04-01
一. 文件的分類
廣義上說文件是按照文件的類型進行分類:
如視頻文件、音頻文件、圖片文件、文檔文件等 等各種形式的文件,在這樣的分類情況下~很明確使用對應的軟件打開對應的文件。
視頻文件:視頻播放器 音頻文件:網易云音樂…
圖片文件:畫圖、照片… 文檔文件:word 文檔,記事本,wps 軟件
表格文件:excel,wps 表格軟件
狹義上的文件是按照組成文件的數據格式分類:
文本文件:數據是按照字符組成的文件,使用記事本可以正常打開
二進制文件:數據是按照字節組成的文件,使用記事本打開會出現亂碼 圖片文件、音頻文件、視頻文件、word 文檔
文本的世界是字符串的世界,和編碼有關 ?二進制的世界是字節的世界,和編碼無關
編程文件操作是邏輯位置的操作 ? 物理位置操作是操作系統處理的
二.文件IO操作
open()? ? ? # 打開文件
f = open('test.txt', 'r')
打印f:
<_io.TextIOWrapper name='1.py' mode='r' encoding='cp936'>
文本IO包裝器 mode只讀 編碼cp936對應GBK
打開文件,會占用當前應用程序進程一個描述符文件(描述符 0 1 2 標準輸入 標準輸出 標準錯誤輸出)
主mode: r:只讀(默認,本質是rt) 指針在頭部 w:寫 指針在頭部(沒有文件創建文件) a:寫 指針在尾部(沒有文件創建文件) x: 寫模式,新建一個文件,如果該文件已存在則會報錯。 副mode t:文本模式 (默認) b: 二進制模式 +: 打開一個文件進行更新(可讀可寫)。
read()? ? ? ? ? ? #? 讀取文件多少個字節
# test.txt: # aa # 123 f = open('test.txt', 'r') # 讀全部 f.read() # aa # 123 f = open('test.txt', 'r') f.read(1) # a f = open('test.txt', 'r') f.read(3) # aa(換行符也是一個字符) f = open('test.txt', 'r') f.read(1) # a f.read(3) # 此時指針在第二個字節 # a # # 1
readline()?? ? ?#? 從文件讀取整行,包括 "\n" 字符。如果指定了一個非負數的參數,則返回指定大小的字節數,包括 "\n" 字符。
readlines()? ? #? 讀取所有行(直到結束符 EOF)并返回列表
write()? ? ? ? ? ?#? 寫入緩沖區
flush()?? ? ? ? ? #? 寫入磁盤
close()? ? ? ? ? #? 緩沖區有數據未寫入磁盤,會flush; 歸還文件描述符
readable()? ? #? 是否可讀,bool
writable()? ? ?#? 是否可寫,bool
closed()? ? ? ?#? 是否關閉,bool
seek()? ? ? ? ?#? 指定指針位置,導致flush
tell()? ? ? ? ? ?#? ?會動下指針,導致flush
with上下文管理 無論是否執行異常,自動執行close()方法
with open('test.txt', 'r+', encoding="utf-8") as f: for line in f.readlines(): print(line)
3.os.path模塊
os.getcwd()? ? ? ? ? ? ? ? ? ? 返回當前的工作目錄
os.chdir()? ? ? ? ? ? ? ? ? ? ? ? 修改當前的工作目錄
os.chmod()? ? ? ? ? ? ? ? ? ? ? 修改文件的訪問權限。
os.system()? ? ? ? ? ? ? ? ? ? ? 執行系統命令
os.unlink()
os.remove()
os.mkdir()
os.rmdir()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 刪除路徑指定的空文件夾
os.listdir()
os.path.abspath(path)? ? ? ? ? ?返回絕對路徑
os.path.dirname(path)? ? ? ? ? ? 返回文件路徑
os.path.basename(path)? ? ? ? 返回文件名
os.path.getsize(path)? ? ? ? ? ? ? 返回文件大小,如果文件不存在就返回錯誤
os.path.exists(path)? ? ? ? ? ? ? ? ? 路徑存在則返回True,路徑損壞返回False
os.path.isfile(path)? ? ? ? ? ? ? ? ? ? 判斷路徑是否為文件
os.path.isdir(path)? ? ? ? ? ? ? ? ? ? ? 判斷路徑是否為目錄
4.shutil模塊
move()
# 功能:移動文件或者文件夾
# 格式:shutil.move(來源地址,目標地址)
# 返回值:目標地址
如果目標路徑指向的文件夾中已經存在了同名文件,那么該文件將被重寫;如果目標路徑指向一個具體的文件,那么指定的文件在移動后將被重命名。
注意:目標路徑下的文件夾必須是已經存在的,否則程序會返回錯誤。
copy()
# 功能:復制文件
# 格式:shutil.copy('來源文件','目標地址')
# 返回值:復制之后的路徑
copy2()
# 功能:復制文件,保留元數據
# 格式:shutil.copy2('來源文件','目標地址')
# 返回值:復制之后的路徑
copyfileobj()
# 將一個文件的內容拷貝的另外一個文件當中
# 格式:shutil.copyfileobj(open(來源文件,'r'),open('目標文件','w'))
# 返回值:無
copyfile()
# 功能:將一個文件的內容拷貝的另外一個文件當中
# 格式:shutil.copyfile(來源文件,目標文件)
# 返回值:目標文件的路徑
copytree()
# 功能:復制整個文件目錄
# 格式:shutil.copytree(來源目錄,目標目錄)
# 返回值:目標目錄的路徑
# 注意:無論文件夾是否為空,均可以復制,而且會復制文件夾中的所有內容
copymode()
# 功能:拷貝權限
copystat()
# 功能:拷貝元數據(狀態)
rmtree()
# 功能:移除整個目錄,無論是否空
# 格式:shutil.rmtree(目錄路徑)
# 返回值:無
which()
# 功能:檢測命令對應的文件路徑
# 格式:shutil.which(‘命令字符串’)
# 返回值:命令文件所在位置
# 注意:window和linux不太一樣。 window的命令都是.exe結尾,linux則不是
disk_usage()
# 功能:檢測磁盤使用信息
# 格式:disk_usage(‘盤符’)
# 返回值:元組
# 歸檔和解包操作
# 歸檔:將多個文件合并到一個文件當中,這種操作方式就是歸檔。
# 解包:將歸檔的文件進行釋放。
# 壓縮:壓縮時將多個文件進行有損或者無損的合并到一個文件當中。
# 解壓縮:就是壓縮的反向操作,將壓縮文件中的多個文件,釋放出來。
# 注意:壓縮屬于歸檔!
make_archive()
# 功能:歸檔函數,歸檔操作
# 格式:shutil.make_archive('目標文件路徑','歸檔文件后綴','需要歸檔的目錄')
# 返回值:歸檔文件的最終路徑
unpack_archive()
# 功能:解包操作
# 格式:shutil.unpack_archive('歸檔文件路徑','解包目標文件夾')
# 返回值:None
# 注意:文件夾不存在會新建文件夾
get_archive_formats()
# 功能:獲取當前系統已注冊的歸檔文件格式(后綴)
# 格式:shutil.get_archive_formats()
# 返回值:列表 ? [(后綴,解釋),(后綴,解釋),(后綴,解釋)...]
get_unpack_formats()
# 功能:獲取當前系統已經注冊的解包文件格式(后綴)
# 格式:shutil.get_unpack_formats()
# 返回值:列表 ? [(后綴,解釋),(后綴,解釋),(后綴,解釋)...]
Python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。