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

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

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

自動化整理計算機文件

通過Python編程完成文件的自動分類、文件和文件夾的快速查找、重復文件的清理、圖片格式的轉換等常見工作。

1. 文件的自動分類

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

使用os和shutil模塊

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

shutil模塊提供的函數(shù)可對文件或文件夾進行移動、復制、壓縮等操作。

"""
os模塊提供了許多操作文件和文件夾的函數(shù),可對文件或文件夾進行新建、刪除、查看屬性以及查找路徑等操作。
shutil模塊提供的函數(shù)可對文件或文件夾進行移動、復制、壓縮等操作。
"""
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]
        # 判斷輸出文件夾是否存在,若不存在則需要創(chuàng)建
        if not os.path.exists(output_path):
            os.mkdir(output_path)
        # 將文件移動到輸出目錄中與其擴展名對應的文件夾中
        shutil.move(src_path, output_path)

測試文件:

效果:

使用pathlib模塊

from pathlib import Path

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

# 使用Path()函數(shù)為源文件夾和目標文件夾創(chuàng)建路徑對象
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)建多級文件夾
            output_path.mkdir(parents=True)
        # 將文件路徑重命名為給定的路徑,實現(xiàn)文件移動
        f.replace(output_path / f.name)

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

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

精確查找文件和文件夾

from pathlib import Path

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

效果:

3. 自動清理重復文件

自動清理文件實現(xiàn)步驟:

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

2.兩兩比較文件內容是否相同;

3.如果內容相同,則將其中一個文件移動到指定的文件夾中

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

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

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

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

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

測試文件:

效果:

4. 批量轉換圖片格式

from pathlib import Path
from PIL import Image


input_dir = 'input_images'
output_dir = 'output_images'
# 創(chuàng)建Path對象
src_folder = Path(input_dir)
output_folder = Path(output_dir)
# 判斷輸出目錄是否存在
if not output_folder.exists():
    # 不存在則創(chuàng)建目錄(多級創(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
    # 將路徑的擴展名進行替換
    output_file = output_file.with_suffix('.png')
    # 保存圖片到指定路徑
    Image.open(f).save(output_file)
    print(f'{f.name}-->格式轉換完成!')

測試文件:

效果:

5. 按拍攝日期自動分類圖片

需安裝exifread模塊:

pip install exifread

步驟:

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

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

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

4.將圖片移動到拍攝日期對應的文件夾中。

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

input_dir = 'input_images'
output_dir = 'output_dir'
# 創(chuàng)建Path對象
src_folder = Path(input_dir)
output_folder = Path(output_dir)
# 判斷輸出目錄是否存在
if not output_folder.exists():
    # 不存在則創(chuàng)建目錄(多級創(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ù)會將讀取的EXIF信息以字典格式返回
        tags = process_file(fp, details=False)
    # 判斷字典中是否有拍攝日期
    if 'EXIF DateTimeOriginal' in tags.keys():
        dto = str(tags['EXIF DateTimeOriginal'])
        # 將拍攝日期轉換成所需格式,作為文件夾名稱
        folder_name = datetime.strptime(dto, '%Y:%m:%d %H:%M:%S').strftime('%Y-%m-%d')
        # 設置輸出目錄的路徑
        output_path = output_folder / folder_name
        if not output_path.exists():
            output_path.mkdir(parents=True)
        # 將圖片移動到拍攝日期對應的文件夾中
        f.replace(output_path / f.name)

測試文件:

效果:

以上就是Python實現(xiàn)自動化整理文件的示例代碼的詳細內容,更多關于Python整理文件的資料請關注腳本之家其它相關文章!

相關文章

最新評論

康马县| 阳高县| 香格里拉县| 平潭县| 宁德市| 临泉县| 泗水县| 田阳县| 永寿县| 儋州市| 广州市| 红河县| 兴安县| 宁城县| 翼城县| 成武县| 江都市| 平乐县| 霍城县| 文成县| 宽城| 深泽县| 武安市| 蓝山县| 东辽县| 黎平县| 遂昌县| 将乐县| 新建县| 静安区| 威海市| 宁陵县| 余干县| 福州市| 闽侯县| 盘锦市| 曲阜市| 常山县| 德惠市| 工布江达县| 青河县|