Python os 檔案操作模組

2021-10-23 07:31:05 字數 3145 閱讀 9375

def

read_file

(filename,encode=

'utf-8'):

# 先判斷檔案是否存在

ifnot os.path.exists(filename)

:raise filenotfounderror(

'{} not exists'

.format

(filename)

)with io.

open

(filename,

'r', encoding=encode)

as f:

content = f.read(

)return content

編碼問題

在使用read時候可能會出現由於編碼錯誤導致的讀取異常,首先open函式開啟檔案的預設編碼格式和作業系統有關, 其次需要確保要開啟的檔案的編碼和作業系統的編碼一致。

檔案的編碼可以使用nodepad++檢視

檔案的按行讀取

read() 一次會把整個檔案讀到記憶體中,要讀取的檔案很大,就不適用。

因此可以使用 readline() 代替 read()

def

write_file

(file_path, file_name, content)

:# 先判斷路徑是否存在,如果不存在就建立

ifnot os.path.exists(file_path)

: os.mkdir(file_path)

# 要寫的檔案的路徑

whole_path_filename = os.path.join(file_path, file_name)

with

open

(whole_path_filename,

'w')

as f:

f.write(content)

# split可以把路徑和檔名分割開

file_ext = os.path.split(

'./test123.txt'

)ipath, ifile = file_ext

file_ext = os.path.splitext(

'./test123.txt'

)print file_ext[

1]

def

find_file

(work_dir, extension=

'txt'):

''' 這個方法可以獲取路徑下指定副檔名的檔案

:param work_dir: 目標資料夾

:param extension: 尋找的副檔名

:return: 所有匹配副檔名的檔案列表

'''lst =

for file_name in os.listdir(work_dir)

: splits = os.path.splitext(file_name)

if splits[1]

=='.{}'

.format

(extension)

:return lst

def

batch_rename

(work_dir, old_ext, new_ext)

:'''

批量重新命名

:param work_dir: 要修改的檔案所在路徑

:param old_ext: 舊的副檔名

:param new_ext: 新的副檔名

:return:

'''for file_name in os.listdir(work_dir)

: split_file = os.path.splitext(file_name)

file_ext = split_file[1]

if file_ext == old_ext:

new_file = split_file[0]

+ new_ext

# 重新命名

os.rename(os.path.join(work_dir, file_name)

, os.path.join(work_dir, new_file)

)

os.walk() 方法用於通過在目錄樹中游走輸出在目錄中的檔名,向上或者向下

os.walk(top[, topdown=true[, οnerrοr=none[, followlinks=false]]])

top – 是你所要遍歷的目錄的位址, 返回的是乙個三元組(root,dirs,files)。

root 所指的是當前正在遍歷的這個資料夾的本身的位址

dirs 是乙個 list ,內容是該資料夾中所有的目錄的名字(不包括子目錄)

files 同樣是 list , 內容是該資料夾中所有的檔案(不包括子目錄)

傳送門

os.path.getmtime()可以獲取檔案最後一次修改時間,但是返回結果是時間戳,所以還需要轉換成可讀的時間,使用datatime.fromtimestamp()

def

get_modify_time

(indir)

:for root, _, files in os.walk(indir)

:for

file

in files:

whole_file_name = os.path.join(root,

file

) modify_time = os.path.getmtime(whole_file_name)

nice_show_time = datetime.fromtimestamp(modify_time)

print

('檔案 最後一次修改時間為 '

.format

(file

, nice_show_time)

)

python os模組相關操作

得到當前工作目錄,即當前python指令碼工作的目錄路徑 os.getcwd 返回指定目錄下的所有檔案和目錄名 os.listdir 函式用來刪除乙個檔案 os.remove 刪除多個目錄 os.removedirs r c python 檢驗給出的路徑是否是乙個檔案 os.path.isfile ...

Python os模組,常用操作

優點 os常用命令 1.返回作業系統型別 posix 是linux作業系統,nt 是windows作業系統 import os print os.name 三元表示式 print linux if os.name posix else windows 2.系統的環境變數 print os.envir...

Python os模組常用操作 檔案路徑

操作 描述os.listdir d pyproject day21模組 path中所有檔案與目錄的名稱 包括隱藏的 os.path.abspath name 獲得絕對路徑 os.rename gouguoqi gouguoqinew 將檔案或目錄 src 重新命名為 dst os.path.spli...