Python 自動(dòng)化常用操作及glob使用大全
本文摘自微信公眾號(hào) GitPython:十個(gè) Python 自動(dòng)化常用操作。如有侵權(quán),聯(lián)系必刪。
1. OS模塊
導(dǎo)入:import os
1. 遍歷文件夾
批量操作的前提就是對(duì)文件夾進(jìn)行遍歷,os.walk遍歷文件夾后產(chǎn)生三個(gè)參數(shù):
- 當(dāng)前文件夾路徑
- 包含文件夾的名稱(列表形式)
- 包含文件名稱(列表形式)
代碼如下(按需求更改目標(biāo)路徑即可):
for dirpath, dirnames, filenames in os.walk(r'C:\\Program Files (x86)'):
print(f'打開文件夾{dirpath}') # 當(dāng)前文件夾路徑
if dirnames:
print(dirnames) # 包含文件夾名稱(列表形式)
if filenames:
print(filenames) # 包含文件名稱(列表形式)
print('-' * 10)
# 輸出結(jié)果:
打開文件夾C:\\Program Files (x86)
['360', 'BirdWallpaper', 'Common Files', 'erl5.9.3.1', 'InstallShield Installation Information', 'Intel', 'Internet Explorer', 'IQIYI Video', 'Java', 'Kingsoft', 'Microsoft Office', 'Microsoft.NET', 'MSBuild', 'NetSarang', 'NVIDIA Corporation', 'Reference Assemblies', 'Sangfor', 'Sinfor', 'SogouInput', 'svnfile', 'Tencent', 'UltraEdit', 'VMware', 'Windows Defender', 'Windows Mail', 'Windows Media Player', 'Windows Multimedia Platform', 'Windows NT', 'Windows Photo Viewer', 'Windows Portable Devices', 'Windows Sidebar', 'WindowsPowerShell', 'Youdao']
['desktop.ini', '微軟常用運(yùn)行庫合集_2019.07.20_X64.exe']
----------
打開文件夾C:\\Program Files (x86)\360
['360bizhi', '360Safe', '360SD']
2. 目標(biāo)路徑是否是文件
給定一個(gè)目標(biāo)路徑path,通過一行代碼判斷該路徑是文件夾還是文件夾路徑,使用os.path.isfile(path),返回True或False。
path = r'C:\Users\Administrator\Desktop\doc\note.md' print(os.path.isfile(path)) # True path = 'xxx' print(os.path.isfile(path)) # False
3. 獲取路徑中的文件名
os模塊方式:os.path.basename可以直接從絕對(duì)路徑中獲取最后的文件名
path = r'C:\Users\Administrator\Desktop\doc\note.md'
print(os.path.basename(path))
print(path.split('\\')[-1])
# note.md
切割字符串方式:path.split('\\')[-1]
path = r'C:\Users\Administrator\Desktop\doc\note.md'
print(path.split('\\')[-1])
# note.md
4. 創(chuàng)建文件夾
創(chuàng)建文件夾的代碼非常常用,因?yàn)橥傻男挛募枷M袀€(gè)新的文件夾存儲(chǔ)。
dirpath = 'xxx' os.mkdir(dirpath) # 這樣會(huì)在該`py`文件同一目錄下生成名為`xxx`的文件夾
但如果存在同名文件夾會(huì)報(bào)錯(cuò)FileExistsError: [WinError 183] 當(dāng)文件已存在時(shí),無法創(chuàng)建該文件。: 'xxx',為了避免報(bào)錯(cuò)可在創(chuàng)建前先判斷是否存在:
dirpath = 'xxx'
if not os.path.exists(dirpath):
os.mkdir(dirpath)
5. 獲取桌面路徑
- 獲取桌面路徑非常常用,可使用
os.path.join(os.path.expanduser("~"), 'Desktop')獲取桌面的絕對(duì)路徑 - 好處:把數(shù)據(jù)放到桌面上,在不同的電腦上都能調(diào)用代碼對(duì)數(shù)據(jù)進(jìn)行處理。
- 如果是在一臺(tái)電腦上把桌面路徑固定在字符串中,則換一臺(tái)電腦就必須修改桌面路徑
desktop_path = os.path.join(os.path.expanduser("~"), 'Desktop')
print(desktop_path)
# C:\Users\Administrator\Desktop
封裝成一個(gè)函數(shù)進(jìn)行調(diào)用
def get_desktop_path():
return os.path.join(os.path.expanduser("~"), 'Desktop')
6. 重命名文件/文件夾 使用os.rename()方法
os.rename('xxx', 'xxx2') # 重命名文件夾
os.rename('test.txt', 'test2.txt') # 重命名文件
7. 批處理文件 - 1
除了os.walk外,在非遍歷各級(jí)文件夾時(shí),還可用os.scandir()獲取指定路徑的全部或符合條件的文件,使用for循環(huán),獲取循環(huán)變量的name和path:
path = '.'
for file in os.scandir(path):
print(file.name, file.path)
# 輸出結(jié)果:
aaa .\aaa
os模塊.py .\os模塊.py
test2.txt .\test2.txt
xxx2 .\xxx2
# 如果path是絕對(duì)路徑,下邊打印出來的也是絕對(duì)路徑
8. 批處理文件 - 2
獲取指定路徑的全部或符合條件的文件第二種方法使用os.listdir()獲取文件名:
path = r'F:\python\python-basic\tips\自動(dòng)化常用操作'
for file in os.listdir(path):
print(file)
# 輸出結(jié)果:
aaa
os模塊.py
test2.txt
xxx2
2. shutil模塊
9. 移動(dòng)文件/文件夾(并重命名) shutil常用于 移動(dòng)文件/文件夾,使用shutil.move()方法:
import shutil # 把當(dāng)前目錄下的shutil_test.txt文件移動(dòng)到當(dāng)前目錄的bbb文件夾下 shutil.move(r'.\shutil_test.txt', r'.\bbb/') # 把當(dāng)前目錄下的shutil_test2.txt文件移動(dòng)到當(dāng)前目錄bbb文件夾下,并重命名為shutil_test22.txt shutil.move(r'.\shutil_test2.txt', r'.\bbb/shutil_test22.txt')
3. globa模塊
10. 批處理文件 - 3
golb模塊最重要的功能是搜索獲取同一級(jí)或各子級(jí)下符合條件的文件(絕對(duì)路徑),非常適合寫批處理的代碼。- 對(duì)大量文件進(jìn)行相同操作,在寫完針對(duì)一份文件的操作后,只需加上幾行代碼就可以完成批處理全部文件的工作
- 參數(shù):
*表示任意字符長度;**/*表示用通配符指代給定路徑下的任何一層;recursive為True表示允許遍歷搜索,默認(rèn)為False
import glob
for file in glob.glob('**/*', recursive=True):
print(file)
# 輸出結(jié)果:
aaa
bbb
glob模塊.py
os模塊.py
shutil模塊.py
test2.txt
xxx2
bbb\shutil_test.txt
bbb\shutil_test22.txt
glob可獲取指定路徑下文件的絕對(duì)路徑,也可接受 通配符 搜索,拓寬了靈活程度。
glob的幾種用法
glob最重要的功能是 搜索獲取同一級(jí)或各子級(jí)下符合條件的文件(絕對(duì)路徑)。- 導(dǎo)入:
import glob - demo1:獲取當(dāng)前目錄下所有文件和文件夾及其文件
for file in glob.glob('**/*', recursive=True):
print(file)
# 輸出結(jié)果:
aaa
bbb
glob模塊.py
os模塊.py
shutil模塊.py
test2.txt
xxx2
bbb\shutil_test.txt
bbb\shutil_test22.txt
bbb\w
bbb\w\aaaa.txt
bbb\w\s
bbb\w\s\i.txt
demo2:獲取當(dāng)前目錄bbb下的文件及其一層子文件
for file in glob.glob('./bbb/*'):
print(file)
# 輸出結(jié)果:
./bbb\shutil_test.txt
./bbb\shutil_test22.txt
./bbb\w
demo3:獲取當(dāng)前目錄bbb下所有文件和文件夾及其文件
for file in glob.glob('./bbb/**', recursive=True):
print(file)
# 輸出結(jié)果:
./bbb\
./bbb\shutil_test.txt
./bbb\shutil_test22.txt
./bbb\w
./bbb\w\aaaa.txt
./bbb\w\s
./bbb\w\s\i.txt
demo4:獲取當(dāng)前目錄bbb下嵌套兩層內(nèi)的文件和文件夾
for file in glob.glob('./bbb' + '/*/*'):
print(file)
# 輸出結(jié)果:
./bbb\w\aaaa.txt
./bbb\w\s
demo5:遍歷包含指定名稱的文件和文件夾
import os
arm_path = glob.glob(os.path.join('./bbb', '*.txt'))
print(arm_path)
# 輸出結(jié)果:
['./bbb\\shutil_test.txt', './bbb\\shutil_test22.txt']
到此這篇關(guān)于Python 自動(dòng)化常用操作的文章就介紹到這了,更多相關(guān)Python 自動(dòng)化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python設(shè)計(jì)模式之橋接模式原理與用法實(shí)例分析
這篇文章主要介紹了Python設(shè)計(jì)模式之橋接模式原理與用法,結(jié)合具體實(shí)例形式分析了Python橋接模式的相關(guān)概念、原理、定義及使用方法,需要的朋友可以參考下2019-01-01
Windows安裝Anaconda并且配置國內(nèi)鏡像的詳細(xì)教程
我們?cè)趯W(xué)習(xí) Python 的時(shí)候需要不同的 Python 版本,關(guān)系到電腦環(huán)境變量配置換來換去很是麻煩,所以這個(gè)時(shí)候我們需要一個(gè)虛擬的 Python 環(huán)境變量,這篇文章主要介紹了Windows安裝Anaconda并且配置國內(nèi)鏡像教程,需要的朋友可以參考下2023-01-01
Python內(nèi)置函數(shù)——__import__ 的使用方法
本篇文章主要介紹了Python內(nèi)置函數(shù)——__import__ 的使用方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
python 如何在list中找Topk的數(shù)值和索引
這篇文章主要介紹了python 如何在list中找Topk的數(shù)值和索引的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
Pytorch實(shí)現(xiàn)LSTM案例總結(jié)學(xué)習(xí)
這篇文章主要介紹了Pytorch實(shí)現(xiàn)LSTM案例總結(jié)學(xué)習(xí),文章通過構(gòu)建網(wǎng)絡(luò)層、前向傳播forward()展開主題介紹,需要的小伙吧可以參考一下2022-07-07
Python常用模塊logging——日志輸出功能(示例代碼)
logging模塊是Python的內(nèi)置模塊,主要用于輸出運(yùn)行日志,可以靈活配置輸出日志的各項(xiàng)信息。這篇文章主要介紹了Python常用模塊logging——日志輸出的實(shí)例代碼,需要的朋友可以參考下2019-11-11

