最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)自動(dòng)化整理文件的示例代碼

 更新時(shí)間:2022年09月05日 11:28:33   作者:夢(mèng)里逆天  
這篇文章主要介紹了如何通過(guò)Python編程完成文件的自動(dòng)分類、文件和文件夾的快速查找、重復(fù)文件的清理、圖片格式的轉(zhuǎn)換等常見(jiàn)工作,需要的可以參考一下

自動(dòng)化整理計(jì)算機(jī)文件

通過(guò)Python編程完成文件的自動(dòng)分類、文件和文件夾的快速查找、重復(fù)文件的清理、圖片格式的轉(zhuǎn)換等常見(jiàn)工作。

1. 文件的自動(dòng)分類

根據(jù)文件的擴(kuò)展名將文件分類整理到不同文件夾中。

使用os和shutil模塊

os模塊提供了許多操作文件和文件夾的函數(shù),可對(duì)文件或文件夾進(jìn)行新建、刪除、查看屬性以及查找路徑等操作。

shutil模塊提供的函數(shù)可對(duì)文件或文件夾進(jìn)行移動(dòng)、復(fù)制、壓縮等操作。

"""
os模塊提供了許多操作文件和文件夾的函數(shù),可對(duì)文件或文件夾進(jìn)行新建、刪除、查看屬性以及查找路徑等操作。
shutil模塊提供的函數(shù)可對(duì)文件或文件夾進(jìn)行移動(dòng)、復(fù)制、壓縮等操作。
"""
import os
import shutil

# 源文件目錄
src_dir = "待分類文件/"
# 輸出文件的目錄
output_dir = '已分類文件/'
files = os.listdir(src_dir)  # 列出src_dir目錄下的所有文件及子文件夾的名稱
print(files)
for f in files:
    # 獲得路徑
    src_path = src_dir + f
    # 判斷是否是文件
    if os.path.isfile(src_path):
        # 獲取文件后綴,與輸出目錄拼接成輸出文件夾路徑
        output_path = output_dir + f.split('.')[-1]
        # 判斷輸出文件夾是否存在,若不存在則需要?jiǎng)?chuàng)建
        if not os.path.exists(output_path):
            os.mkdir(output_path)
        # 將文件移動(dòng)到輸出目錄中與其擴(kuò)展名對(duì)應(yīng)的文件夾中
        shutil.move(src_path, output_path)

測(cè)試文件:

效果:

使用pathlib模塊

from pathlib import Path

# 源文件目錄
src_dir_name = "待分類文件/"
# 輸出文件的目錄
output_dir_name = '已分類文件/'

# 使用Path()函數(shù)為源文件夾和目標(biāo)文件夾創(chuàng)建路徑對(duì)象
src_dir = Path(src_dir_name)
output_dir = Path(output_dir_name)

# 在源文件夾下查找文件和子文件夾,*表示返回所有文件和子文件夾(完整路徑)
files = src_dir.glob('*')
for f in files:
    # 判斷路徑是否代表文件
    if f.is_file():
        # 獲得輸出文件夾路徑
        output_path = output_dir / f.suffix.strip('.')
        # 判斷輸出文件夾是否存在
        if not output_path.exists():
            # 不存在則創(chuàng)建,parents為True表示創(chuàng)建多級(jí)文件夾
            output_path.mkdir(parents=True)
        # 將文件路徑重命名為給定的路徑,實(shí)現(xiàn)文件移動(dòng)
        f.replace(output_path / f.name)

2. 文件和文件夾的快速查找

使用python編寫快速查找文件和文件夾程序,實(shí)現(xiàn)精確查找和模糊查找。

精確查找文件和文件夾

from pathlib import Path

while True:
    folder = input("請(qǐng)輸入查找目錄的路徑(如:D:\\):")
    folder = Path(folder.strip())  # 使用Path()函數(shù)創(chuàng)建路徑對(duì)象
    # 判斷輸入的路徑是否存在,且是否為目錄
    if folder.exists() and folder.is_dir():
        break
    else:
        print("輸入的路徑有誤,請(qǐng)重新輸入!")
search_word = input("請(qǐng)輸入要查找的文件或文件夾名稱:").strip()  # 獲得輸入的文件或文件夾名稱,去掉首尾空格
"""
glob()函數(shù)和rglob()函數(shù)的區(qū)別:
glob()函數(shù)和rglob()函數(shù)都能使用通配符在指定路徑下查找文件和子文件夾。
區(qū)別在于:
    glob()函數(shù)只進(jìn)行以及查找,而rglob()函數(shù)會(huì)進(jìn)行多級(jí)查找。
"""
# 使用rglob()函數(shù)在用戶輸入的路徑下查找名稱與指定關(guān)鍵詞完全相同的文件及字文件夾,并將結(jié)果轉(zhuǎn)換成列表
results = list(folder.rglob(pattern=search_word))
if len(results) != 0:
    print(f'在【{folder}】下查找到的結(jié)果如下:')
    for r in results:
        print(r)
else:
    print(f'在【{folder}】下未找到名為【{search_word}】的文件或文件夾!')

效果:

模糊查找文件和文件夾

# author:mlnt
# createdate:2022/8/23
from pathlib import Path

while True:
    folder = input("請(qǐng)輸入查找目錄的路徑(如:D:\\):")
    folder = Path(folder.strip())  # 使用Path()函數(shù)創(chuàng)建路徑對(duì)象
    # 判斷輸入的路徑是否存在,且是否為目錄
    if folder.exists() and folder.is_dir():
        break
    else:
        print("輸入的路徑有誤,請(qǐng)重新輸入!")
search_word = input("請(qǐng)輸入要查找的文件或文件夾名稱:").strip()  # 獲得輸入的文件或文件夾名稱,去掉首尾空格
"""
glob()函數(shù)和rglob()函數(shù)的區(qū)別:
glob()函數(shù)和rglob()函數(shù)都能使用通配符在指定路徑下查找文件和子文件夾。
區(qū)別在于:
    glob()函數(shù)只進(jìn)行以及查找,而rglob()函數(shù)會(huì)進(jìn)行多級(jí)查找。
"""
# 使用rglob()函數(shù)在用戶輸入的路徑下查找名稱與指定關(guān)鍵詞完全相同的文件及字文件夾,并將結(jié)果轉(zhuǎn)換成列表
results = list(folder.rglob(pattern=f'*{search_word}*'))
if len(results) == 0:
    print(f'在【{folder}】下未找到名稱包含【{search_word}】的文件或文件夾!')
else:
    result_folders = []  # 查找到的與關(guān)鍵詞相關(guān)的文件夾
    result_files = []   # 與關(guān)鍵詞相關(guān)的文件
    for r in results:
        if r.is_dir():
            # 如果是目錄(文件夾),則添加到文件夾列表
            result_folders.append(r)
        else:
            result_files.append(r)
    if len(result_folders) != 0:
        print(f'在【{folder}】下查找到的與關(guān)鍵詞{search_word}相關(guān)的文件夾:')
        for f in result_folders:
            print(f)
    if len(result_files) != 0:
        print(f'在【{folder}】下查找到的與關(guān)鍵詞{search_word}相關(guān)的文件如下:')
        for f in result_files:
            print(f)

效果:

3. 自動(dòng)清理重復(fù)文件

自動(dòng)清理文件實(shí)現(xiàn)步驟:

1.列出指定文件夾下的所有文件;

2.兩兩比較文件內(nèi)容是否相同;

3.如果內(nèi)容相同,則將其中一個(gè)文件移動(dòng)到指定的文件夾中

"""
自動(dòng)清理文件實(shí)現(xiàn)步驟:
1.列出指定文件夾下的所有文件;
2.兩兩比較文件內(nèi)容是否相同;
3.如果內(nèi)容相同,則將其中一個(gè)文件移動(dòng)到指定的文件夾中
"""

# 導(dǎo)入pathlib模塊中的Path()函數(shù)
from pathlib import Path
# 導(dǎo)入filecmp模塊中的cmp()函數(shù),用于進(jìn)行文件的比較
from filecmp import cmp

input_dir = '待處理文件'
output_dir = '重復(fù)文件'
# 創(chuàng)建Path對(duì)象
src_folder = Path(input_dir)
output_folder = Path(output_dir)
# 判斷輸出目錄是否存在
if not output_folder.exists():
    # 不存在則創(chuàng)建目錄(多級(jí)創(chuàng)建)
    output_folder.mkdir(parents=True)

results = list(src_folder.glob('*'))  # 列出給定目錄下的文件及子文件夾
file_list = []
for r in results:
    # 判斷路徑是否指向一個(gè)文件
    if r.is_file():
        # 是則添加到文件列表
        file_list.append(r)

# 遍歷文件列表,并進(jìn)行比較
for i in file_list:
    for j in file_list:
        if i != j and i.exists() and j.exists():
            # 比較兩個(gè)文件是否相同
            if cmp(i, j):
                # 如果兩個(gè)文件相同,則把其中一個(gè)文件移動(dòng)到指定文件夾
                # 刪除重復(fù)文件j.unlink()
                j.replace(output_folder / j.name)

測(cè)試文件:

效果:

4. 批量轉(zhuǎn)換圖片格式

from pathlib import Path
from PIL import Image


input_dir = 'input_images'
output_dir = 'output_images'
# 創(chuàng)建Path對(duì)象
src_folder = Path(input_dir)
output_folder = Path(output_dir)
# 判斷輸出目錄是否存在
if not output_folder.exists():
    # 不存在則創(chuàng)建目錄(多級(jí)創(chuàng)建)
    output_folder.mkdir(parents=True)

file_list = list(src_folder.glob('*[.jpg|.jpeg]'))  # 查找后綴為jpg或jpeg的圖片
for f in file_list:
    output_file = output_folder / f.name
    # 將路徑的擴(kuò)展名進(jìn)行替換
    output_file = output_file.with_suffix('.png')
    # 保存圖片到指定路徑
    Image.open(f).save(output_file)
    print(f'{f.name}-->格式轉(zhuǎn)換完成!')

測(cè)試文件:

效果:

5. 按拍攝日期自動(dòng)分類圖片

需安裝exifread模塊:

pip install exifread

步驟:

1.列出指定文件夾下的所有圖片;

2.讀取圖片的EXIF(Exchangeable Image File Format)信息,并提取出拍攝日期;

3.將拍攝日期轉(zhuǎn)換為所需格式,然后使用拍攝日期創(chuàng)建文件夾;

4.將圖片移動(dòng)到拍攝日期對(duì)應(yīng)的文件夾中。

"""
步驟:
    1.列出指定文件夾下的所有圖片;
    2.讀取圖片的EXIF(Exchangeable Image File Format)信息,并提取出拍攝日期;pip install exifread
    3.將拍攝日期轉(zhuǎn)換為所需格式,然后使用拍攝日期創(chuàng)建文件夾;
    4.將圖片移動(dòng)到拍攝日期對(duì)應(yīng)的文件夾中。
"""
from pathlib import Path
from datetime import datetime
from exifread import process_file

input_dir = 'input_images'
output_dir = 'output_dir'
# 創(chuàng)建Path對(duì)象
src_folder = Path(input_dir)
output_folder = Path(output_dir)
# 判斷輸出目錄是否存在
if not output_folder.exists():
    # 不存在則創(chuàng)建目錄(多級(jí)創(chuàng)建)
    output_folder.mkdir(parents=True)

# 查找后綴為jpg或jpeg的圖片
file_list = list(src_folder.glob('*[.jpg|.jpeg]'))
for f in file_list:
    with open(f, 'rb') as fp:
        # 讀取圖片的EXIF信息
        # process_file函數(shù)會(huì)將讀取的EXIF信息以字典格式返回
        tags = process_file(fp, details=False)
    # 判斷字典中是否有拍攝日期
    if 'EXIF DateTimeOriginal' in tags.keys():
        dto = str(tags['EXIF DateTimeOriginal'])
        # 將拍攝日期轉(zhuǎn)換成所需格式,作為文件夾名稱
        folder_name = datetime.strptime(dto, '%Y:%m:%d %H:%M:%S').strftime('%Y-%m-%d')
        # 設(shè)置輸出目錄的路徑
        output_path = output_folder / folder_name
        if not output_path.exists():
            output_path.mkdir(parents=True)
        # 將圖片移動(dòng)到拍攝日期對(duì)應(yīng)的文件夾中
        f.replace(output_path / f.name)

測(cè)試文件:

效果:

以上就是Python實(shí)現(xiàn)自動(dòng)化整理文件的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Python整理文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

龙岩市| 视频| 灌南县| 洛浦县| 株洲市| 泸州市| 赫章县| 宝鸡市| 镇原县| 黄平县| 台湾省| 加查县| 丘北县| 普格县| 临武县| 安阳县| 淮南市| 玉屏| 新河县| 景泰县| 霍城县| 清苑县| 绵竹市| 金溪县| 玉屏| 青海省| 芒康县| 罗山县| 太仆寺旗| 鸡西市| 湖南省| 绥中县| 湖口县| 太和县| 历史| 抚顺县| 定边县| 绍兴县| 广元市| 牙克石市| 台山市|