Python批處理:檔案操作

leagueandlegends發表於2024-05-01

一、為什麼要使用python處理檔案

檔案處理管理可分為兩種,一種是視覺化、手動化,學習成本低,處理數量有限。另一種是程式設計化、自動化,有一定學習成本,可以基於邏輯處理。計算機的常項是對既定規則的發揮,這個發揮作用於"批次"這個層面。

二、相對路徑與絕對路徑

相對路徑:被操作的檔案相對你當前執行的程式來說的路徑叫相對路徑。

絕對路徑:檔案在計算機絕對的路徑或者說位置叫做絕對路徑。

三、python處理檔案的常用命令

python檔案處理的三個常用庫:

import os  #查、改
import shutil #複製、剪下
import zipfile #打包、壓縮 

os的常用方法,path路徑系列

os.path.abspath(引數)       #獲取當前檔案的絕對路徑 c:/project/X/XXX.txt
os.path.isdir(引數)             #獲取當前路徑檔案是否為資料夾-布林
os.path.isfile(引數)             #獲取當前路徑檔案是否為檔案-布林
os.path.basename(引數)    #獲取當前路徑的結尾名字 c:/project/xxx.txt
os.path.split(引數)             #以路徑檔名切分列表['c:/project/','xxx.txt']
os.path.join(引數)              #(‘aa’,'bb','x.txt')aa/bb/x.txt
os.path.getsize(引數)         #以位元組單位(B)返回當前檔案大小換算KB除以1024 換算MB再除以1024

輸出壓縮檔案的絕對路徑

import os

print(os.path.abspath('abc.zip'))

輸出結果:

判斷一個路徑是否是目錄

import os

print(os.path.isdir('abc.zip'))

輸出結果:

import os

print(os.path.isdir('D:\PythonProject\Python_001\pythonProject'))

輸出結果: 

判斷是否為檔案

import os

print(os.path.isfile('abc.zip'))

輸出結果:

輸出檔名

import os

print(os.path.basename('D:\\PythonProject\\Python_001\\pythonProject\\abc.zip'))

 

輸出結果:

切分路徑與檔名

import os

print(os.path.split('D:\\PythonProject\\Python_001\\pythonProject\\abc.zip'))

 

輸出結果:

連線檔案路徑

import os

print(os.path.join('D:\\','PythonProject\\Python_001\\pythonProject','abc.zip'))

輸出結果:

os常用的方法(讀、改、查系列) 

os.getcwd()                    #獲取當前工作絕對路徑  c:/project/X/
os.listdir(引數)                 #獲取當前路徑下所有檔案/資料夾
os.remove(引數)              #刪除檔案(注意不是目錄)
os.removedirs(引數)         #刪除多級目錄,目錄必須要為空(注意!從底層往上層全部刪除)
os.rmdir(引數)                  #刪除一個目錄,目錄必須要為空
os.mkdir/makedirs(引數)  #建立一級或多級目錄,這裡s是多級

shutil下,常用方法(複製、剪下系列)

shutil.rmtree(資料夾)                      #刪除路徑下的所有檔案、目錄,無論是否有檔案(特別注意這個跟os.remove rmdir removedirs的區別)
shutil.copytree(源目錄,目標目錄)     #資料夾全量(包含下屬所有層次)複製
shutil.copy(原始檔,目標檔案)           #檔案複製
shutil.move(原始檔夾,目標資料夾)    #資料夾/檔案剪下

使用zipfile完成壓縮和解壓 

壓縮檔案

import os
import zipfile

# 建立一個壓縮寫入物件
z=zipfile.ZipFile('abc.zip','w')
for x in os.listdir('file200'):
#具體向壓縮包寫入操作
    z.write('file200'+os.sep+x)
z.close()

 程式結果執行如下:

解壓檔案

import zipfile

# 建立一個壓縮寫入物件
z=zipfile.ZipFile('abc.zip','r')
for file in z.namelist():
#具體向壓縮包寫入操作
    z.extract(file,"tmp/")

 程式結果執行如下:

相關文章