天天看點

python檔案及目錄操作代碼彙總

前言

在python中,内置了檔案(file)對象,通過一些内置的方法就可以實作對檔案的操作,例如open()方法建立一個檔案對象,write()方法向檔案寫入内容。

一.檔案基本操作

1.建立和打開檔案

想要操作檔案,先要建立或者打開指定檔案并建立檔案對象,可以通過内置函數open()來實作。

file = open(file_name[,mode[,buffering]])
'''
file_name : 要建立或者打開的檔案名
mode : 用于指定檔案打開的方式
'''           

複制

mode參數的參數值表

模式 描述
r 以隻讀方式打開檔案。檔案的指針将會放在檔案的開頭。這是預設模式。
rb 以二進制格式打開一個檔案用于隻讀。檔案指針将會放在檔案的開頭。這是預設模式。
r+ 打開一個檔案用于讀寫。檔案指針将會放在檔案的開頭。
rb+ 以二進制格式打開一個檔案用于讀寫。檔案指針将會放在檔案的開頭。
w 打開一個檔案隻用于寫入。如果該檔案已存在則打開檔案,并從開頭開始編輯,即原有内容會被删除。如果該檔案不存在,建立新檔案。
wb 以二進制格式打開一個檔案隻用于寫入。如果該檔案已存在則打開檔案,并從開頭開始編輯,即原有内容會被删除。如果該檔案不存在,建立新檔案。
w+ 打開一個檔案用于讀寫。如果該檔案已存在則打開檔案,并從開頭開始編輯,即原有内容會被删除。如果該檔案不存在,建立新檔案。
wb+ 以二進制格式打開一個檔案用于讀寫。如果該檔案已存在則打開檔案,并從開頭開始編輯,即原有内容會被删除。如果該檔案不存在,建立新檔案。
a 打開一個檔案用于追加。如果該檔案已存在,檔案指針将會放在檔案的結尾。也就是說,新的内容将會被寫入到已有内容之後。如果該檔案不存在,建立新檔案進行寫入。
ab 以二進制格式打開一個檔案用于追加。如果該檔案已存在,檔案指針将會放在檔案的結尾。也就是說,新的内容将會被寫入到已有内容之後。如果該檔案不存在,建立新檔案進行寫入。
a+ 打開一個檔案用于讀寫。如果該檔案已存在,檔案指針将會放在檔案的結尾。檔案打開時會是追加模式。如果該檔案不存在,建立新檔案用于讀寫。
ab+ 以二進制格式打開一個檔案用于追加。如果該檔案已存在,檔案指針将會放在檔案的結尾。如果該檔案不存在,建立新檔案用于讀寫。

注意

采用open()函數打開檔案時,預設采用的是GBK編碼,如果想要用其他編碼方式,需要加上encoding參數

file = open(‘./text.txt’,’a+’,encoding=’utf-8′)

#需要采用原檔案用的編碼方式打開,不然會報錯

2.關閉檔案

打開檔案之後,需要及時關閉,以免對檔案造成不必要的破壞。可以用内置函數close()。

file = open(‘./text.txt’,’a+’)

file.close()

close()函數先重新整理緩沖區中還沒有寫入的資訊,将其寫入到檔案中,再關閉檔案,起到對檔案的保護作用。

3.寫入檔案

文法

file = write(string)

demo

#打開檔案
file = open('./text.txt','a+')
#寫入檔案								
file = write('不負代碼,不負卿')
#關閉檔案
file.close()           

複制

注:

再寫入檔案的時候要注入打開檔案的時候是處于什麼模式,不然會把原資料覆寫掉。

4.讀取檔案

讀取檔案的前提是在打開檔案時,指定的打開模式為r(隻讀)或者r+(讀寫)否則,會抛出異常。

(1)讀取指定字元

file.read([size])

#size :用于指定要讀取的字元個數,如果省略,則一次性讀取所有内容。

(2)讀取一行

file.readline()

該方法用于讀取一行文本

(3)讀取全部行

file.readlins()

二.目錄操作

python内置了os子產品及子子產品os.path用于對目錄或檔案的操作。

os子產品提供的與目錄相關的函數

函數 說明
getcwd() 傳回目前的工作目錄
listdir(path) 傳回指定路徑下的檔案和目錄資訊
mkdir(path[,mode]) 建立目錄
makedirs(path/path2…..) 建立多級目錄
rmdir(path) 删除目錄
removedirs(/path1/path2…) 删除多級目錄
chdir(path) 把path設定為目前工作目錄
walk(top[,topdown[,onerror]) 周遊
access(path,accessmode) 擷取指定檔案是否有某個權限(accessmode的等于R_OK(讀取),W_OK(寫入),X_OK(執行),F_OK(存在)),如果有指定的權限,傳回1,否則傳回0.
chmod(path,mode) 修改path指定檔案的通路權限
remove(path) 删除指定的檔案路徑
rename(src,dst) 将檔案或目錄src重命名為dst
stat(path) 傳回path指定檔案的資訊

os.path子產品提供與目錄有關的函數

函數 說明
abspath(path) 用于擷取檔案或目錄的絕對路徑
exists(path) 用于判斷目錄或者檔案是否存在,如果存在則傳回True,否則傳回False
join(path,name) 将目錄與目錄或者檔案名拼接起來
splitext() 分離檔案名和拓展名
split(path) 将路徑和檔案名分開
basename(path) 從一個目錄中提取檔案名
dirname(path) 從一個路徑中提取檔案路徑,不包括檔案名
isdir(path) 用于判斷路徑是否有效

demo —— 擷取目前工作目錄

import os

print(os.getcwd())

demo —— 判斷目錄是否存在

import os

print(os.path.exists(“c:\\demo”))

因為exists()是os的子子產品提供的,是以要要加字首,os.path

demo —— 建立一級目錄

import os
path = "c://demo"
#如果要建立的目錄已經存在,則會抛出異常,先判斷要建立的目錄是否存在
if not os.path.exists(path):
	os.mkdir(path)
else:
	print('該目錄已經存在')           

複制

mkdir(path)建立的目錄是一級目錄,如果傳入的path中最後一級的上級目錄不存在,那麼會抛出異常。

demo —— 建立多級目錄

import os

os.makedirs(“C:\\demo1\\demo2\\…”)

demo —— 删除目錄

import os
path = "C:\demo1\demo2"
#判斷要删除的目錄,如果不存在會抛出問題
if os.path.exists(path):
	os.rmdir("C:\demo1\demo2") #删除的是demo2這個檔案
	print("目錄删除成功!")
else:
	print("該目錄不存")           

複制

注:

rmdir()函數隻能删除空的目錄,如果不為空就不能删除,可以一下代碼删除不為空的目錄。

import shutil
shutil.rmtree("C:\demo\text")           

複制

demo —— 周遊目錄

os.walk()的傳回值是一個包含三個元素(dirpath,dirnams,filenames)的元組生成器對象。

dirpath: 是一個字元串,表示目前周遊的路徑

dirnames: 是一個清單,表示的是目前路徑下包含的子目錄

filenames: 也是一個清單,目前目錄下的檔案

os.walk(top,[topdown][,onerror][,followlinks])
'''
top: 用于指定要周遊的目錄	
topdown: 可選參數,用于指定要周遊的順序,如果為True(預設),表示從上到下周遊,如果為False,表示從小到上。
'''           

複制

import os
path = "C:\demo"
#root 是目前根路徑,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 —— 産找目前目錄下某個檔案是否存在

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))           

複制

以上就是本文的全部内容,希望對大家的學習有所幫助。