溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中文件及目錄的一些基本操作

發布時間:2020-07-09 10:53:58 來源:億速云 閱讀:213 作者:清晨 欄目:開發技術

這篇文章將為大家詳細講解有關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.關閉文件

打開文件之后,需要及時關閉,以免對文件造成不必要的破壞??梢杂脙戎煤瘮礳lose()。

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/path3.....)創建多級目錄
rmdir(path)刪除目錄
removedirs(/path2/path3...)刪除多級目錄
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))

關于python中文件及目錄的一些基本操作就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女