使用Python比较两个文件夹和其中的所有文件

swvgeqrz  于 4个月前  发布在  Python
关注(0)|答案(2)|浏览(62)

我想做一个小的Python脚本来检查和compre两个文件夹的内容和里面的所有文件。

  • 循环浏览基于Folder A的文件夹结构
  • Folder A中的每个文件与Folder B进行比较
  • 如果文件不存在或内容100%相同,则将文件复制到Folder C,但与Folder A处于相同的文件夹结构中

有没有人能建议如何做到这一点?

uubf1zoe

uubf1zoe1#

我相信来自filecmpdircmp可以为您完成大部分工作:https://docs.python.org/2/library/filecmp.html
您可以扩展此页面中的基本示例。通过使用属性left_onlyright_onlydiff_files,您可以轻松识别丢失的文件和不是100%相同的文件。

jw5wzhpr

jw5wzhpr2#

版本1

import os

folder1 = r'e:\Carte\BB\17 - Site Leadership\Principal 2022\ro'
folder2 = r'e:\Carte\BB\17 - Site Leadership\Principal\ro'

# Funcție pentru a returna lista de fișiere HTML dintr-un folder
def get_html_files(folder):
    html_files = []
    for root, dirs, files in os.walk(folder):
        for file in files:
            if file.lower().endswith('.html'):
                html_files.append(file)
    return html_files

# Obține lista de fișiere HTML pentru fiecare folder
html_files_folder1 = get_html_files(folder1)
html_files_folder2 = get_html_files(folder2)

# Verifică fișierele care se găsesc în folderul 1, dar nu în folderul 2
missing_files = [file for file in html_files_folder1 if file not in html_files_folder2]

# Afișează fișierele și folderul corespunzător în care se găsesc
for file in missing_files:
    if file in html_files_folder1:
        print(f"Fișierul {file} se găsește în folderul {folder1}")
    if file in html_files_folder2:
        print(f"Fișierul {file} se găsește în folderul {folder2}")

字符串

版本2:

import os

folder1 = r'c:\Folder-Oana\extracted'
folder2 = r'c:\Folder-Oana\extracted\translated'

# Funcție pentru a returna lista de fișiere dintr-un folder, ignorând subfolderele
def get_files(folder):
    files = []
    for file in os.listdir(folder):
        file_path = os.path.join(folder, file)
        if os.path.isfile(file_path):
            files.append(file)
    return files

# Obține lista de fișiere pentru fiecare folder
files_folder1 = get_files(folder1)
files_folder2 = get_files(folder2)

# Compara fișierele din folder1 cu cele din folder2
missing_files = []
for file in files_folder1:
    # Verifică dacă fișierul se află în folder1, dar nu în folder2
    if file not in files_folder2:
        # Adaugă fișierul la lista de fișiere lipsă
        missing_files.append(file)

# Afisează fișierele lipsă
if missing_files:
    print("Fișierele care se găsesc în folderul 1, dar nu în folderul 2, sunt:")
    for file in missing_files:
        print(file)
else:
    print("Nu există fișiere lipsă în folderul 2 față de folderul 1.")

相关问题