python文件及目錄操作代碼匯總
前言
在python中,內(nèi)置了文件(file)對(duì)象,通過一些內(nèi)置的方法就可以實(shí)現(xiàn)對(duì)文件的操作,例如open()方法創(chuàng)建一個(gè)文件對(duì)象,write()方法向文件寫入內(nèi)容。
一.文件基本操作
1.創(chuàng)建和打開文件
想要操作文件,先要?jiǎng)?chuàng)建或者打開指定文件并創(chuàng)建文件對(duì)象,可以通過內(nèi)置函數(shù)open()來實(shí)現(xiàn)。
file = open(file_name[,mode[,buffering]]) ''' file_name : 要?jiǎng)?chuàng)建或者打開的文件名 mode : 用于指定文件打開的方式 '''
mode參數(shù)的參數(shù)值表
模式 | 描述 |
---|---|
r | 以只讀方式打開文件。文件的指針將會(huì)放在文件的開頭。這是默認(rèn)模式。 |
rb | 以二進(jìn)制格式打開一個(gè)文件用于只讀。文件指針將會(huì)放在文件的開頭。這是默認(rèn)模式。 |
r+ | 打開一個(gè)文件用于讀寫。文件指針將會(huì)放在文件的開頭。 |
rb+ | 以二進(jìn)制格式打開一個(gè)文件用于讀寫。文件指針將會(huì)放在文件的開頭。 |
w | 打開一個(gè)文件只用于寫入。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。 |
wb | 以二進(jìn)制格式打開一個(gè)文件只用于寫入。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。 |
w+ | 打開一個(gè)文件用于讀寫。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。 |
wb+ | 以二進(jìn)制格式打開一個(gè)文件用于讀寫。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。 |
a | 打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。 |
ab | 以二進(jìn)制格式打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。 |
a+ | 打開一個(gè)文件用于讀寫。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。文件打開時(shí)會(huì)是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫。 |
ab+ | 以二進(jìn)制格式打開一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫。 |
注意
采用open()函數(shù)打開文件時(shí),默認(rèn)采用的是GBK編碼,如果想要用其他編碼方式,需要加上encoding參數(shù)
file = open('./text.txt','a+',encoding='utf-8')
#需要采用原文件用的編碼方式打開,不然會(huì)報(bào)錯(cuò)
2.關(guān)閉文件
打開文件之后,需要及時(shí)關(guān)閉,以免對(duì)文件造成不必要的破壞??梢杂脙?nèi)置函數(shù)close()。
file = open('./text.txt','a+')
file.close()
注
close()函數(shù)先刷新緩沖區(qū)中還沒有寫入的信息,將其寫入到文件中,再關(guān)閉文件,起到對(duì)文件的保護(hù)作用。
3.寫入文件
語(yǔ)法
file = write(string)
demo
#打開文件 file = open('./text.txt','a+') #寫入文件 file = write('不負(fù)代碼,不負(fù)卿') #關(guān)閉文件 file.close()
注:
再寫入文件的時(shí)候要注入打開文件的時(shí)候是處于什么模式,不然會(huì)把原數(shù)據(jù)覆蓋掉。
4.讀取文件
讀取文件的前提是在打開文件時(shí),指定的打開模式為r(只讀)或者r+(讀寫)否則,會(huì)拋出異常。
(1)讀取指定字符
file.read([size])
#size :用于指定要讀取的字符個(gè)數(shù),如果省略,則一次性讀取所有內(nèi)容。
(2)讀取一行
file.readline()
該方法用于讀取一行文本
(3)讀取全部行
file.readlins()
二.目錄操作
python內(nèi)置了os模塊及子模塊os.path用于對(duì)目錄或文件的操作。
os模塊提供的與目錄相關(guān)的函數(shù)
函數(shù) | 說明 |
---|---|
getcwd() | 返回當(dāng)前的工作目錄 |
listdir(path) | 返回指定路徑下的文件和目錄信息 |
mkdir(path[,mode]) | 創(chuàng)建目錄 |
makedirs(path/path2.....) | 創(chuàng)建多級(jí)目錄 |
rmdir(path) | 刪除目錄 |
removedirs(/path1/path2...) | 刪除多級(jí)目錄 |
chdir(path) | 把path設(shè)置為當(dāng)前工作目錄 |
walk(top[,topdown[,onerror]) | 遍歷 |
access(path,accessmode) | 獲取指定文件是否有某個(gè)權(quán)限(accessmode的等于R_OK(讀取),W_OK(寫入),X_OK(執(zhí)行),F_OK(存在)),如果有指定的權(quán)限,返回1,否則返回0. |
chmod(path,mode) | 修改path指定文件的訪問權(quán)限 |
remove(path) | 刪除指定的文件路徑 |
rename(src,dst) | 將文件或目錄src重命名為dst |
stat(path) | 返回path指定文件的信息 |
os.path模塊提供與目錄有關(guān)的函數(shù)
函數(shù) | 說明 |
---|---|
abspath(path) | 用于獲取文件或目錄的絕對(duì)路徑 |
exists(path) | 用于判斷目錄或者文件是否存在,如果存在則返回True,否則返回False |
join(path,name) | 將目錄與目錄或者文件名拼接起來 |
splitext() | 分離文件名和拓展名 |
split(path) | 將路徑和文件名分開 |
basename(path) | 從一個(gè)目錄中提取文件名 |
dirname(path) | 從一個(gè)路徑中提取文件路徑,不包括文件名 |
isdir(path) | 用于判斷路徑是否有效 |
demo —— 獲取當(dāng)前工作目錄
import os
print(os.getcwd())
demo —— 判斷目錄是否存在
import os
print(os.path.exists("c:\\demo"))
注
因?yàn)閑xists()是os的子模塊提供的,所以要要加前綴,os.path
demo —— 創(chuàng)建一級(jí)目錄
import os path = "c://demo" #如果要?jiǎng)?chuàng)建的目錄已經(jīng)存在,則會(huì)拋出異常,先判斷要?jiǎng)?chuàng)建的目錄是否存在 if not os.path.exists(path): os.mkdir(path) else: print('該目錄已經(jīng)存在')
注
mkdir(path)創(chuàng)建的目錄是一級(jí)目錄,如果傳入的path中最后一級(jí)的上級(jí)目錄不存在,那么會(huì)拋出異常。
demo —— 創(chuàng)建多級(jí)目錄
import os
os.makedirs("C:\\demo1\\demo2\\...")
demo —— 刪除目錄
import os path = "C:\\demo1\\demo2" #判斷要?jiǎng)h除的目錄,如果不存在會(huì)拋出問題 if os.path.exists(path): os.rmdir("C:\\demo1\\demo2") #刪除的是demo2這個(gè)文件 print("目錄刪除成功!") else: print("該目錄不存")
注:
rmdir()函數(shù)只能刪除空的目錄,如果不為空就不能刪除,可以一下代碼刪除不為空的目錄。
import shutil shutil.rmtree("C:\\demo\\text")
demo —— 遍歷目錄
os.walk()的返回值是一個(gè)包含三個(gè)元素(dirpath,dirnams,filenames)的元組生成器對(duì)象。
dirpath: 是一個(gè)字符串,表示當(dāng)前遍歷的路徑
dirnames: 是一個(gè)列表,表示的是當(dāng)前路徑下包含的子目錄
filenames: 也是一個(gè)列表,當(dāng)前目錄下的文件
os.walk(top,[topdown][,onerror][,followlinks]) ''' top: 用于指定要遍歷的目錄 topdown: 可選參數(shù),用于指定要遍歷的順序,如果為True(默認(rèn)),表示從上到下遍歷,如果為False,表示從小到上。 '''
import os path = "C:\\demo" #root 是當(dāng)前根路徑,dirs包含路徑下的子目錄,files包含了子目錄下的二五年間 for root,dirs,fles in os.walk(path,topdown=True): for name in dirs: print(os.path.join(root,name)) for name in files: print(os.path.join(root.name))
demo —— 產(chǎn)找當(dāng)前目錄下某個(gè)文件是否存在
import os path = "C:\\demo" filename = "love.txt" for root,dirs,files in os.walk(path): for name in files: if filename== name: print(os.path.join(root,name))
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
通過Python實(shí)現(xiàn)在Word中添加和刪除書簽的操作
在Word中,書簽功能是一個(gè)非常實(shí)用的工具,它允許用戶快速定位到文檔中的特定位置,無論是進(jìn)行文檔審閱、編輯還是查找特定信息,書簽都能提供極大的便利,下面將詳細(xì)介紹如何通過Python在Word文檔中添加和刪除書簽,需要的朋友可以參考下2024-09-09python操作excel文件并輸出txt文件的實(shí)例
今天小編就為大家分享一篇python操作excel文件并輸出txt文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07Tensorflow中TFRecord生成與讀取的實(shí)現(xiàn)
TFRecord格式的文件存儲(chǔ)形式會(huì)很合理的幫我們存儲(chǔ)數(shù)據(jù),本文主要介紹了Tensorflow中TFRecord生成與讀取的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05Python warning警告出現(xiàn)的原因及忽略方法
在本篇文章里小編給大家分享的是關(guān)于Python warning警告出現(xiàn)的原因及忽略方法,有需要的朋友們可以學(xué)習(xí)參考下。2020-01-01基于Python數(shù)據(jù)可視化利器Matplotlib,繪圖入門篇,Pyplot詳解
下面小編就為大家?guī)硪黄赑ython數(shù)據(jù)可視化利器Matplotlib,繪圖入門篇,Pyplot詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10