练习文件查询、操做、复制等内容

为了练习文件查询、操做、复制等内容,作了以下的代码进行练习。python

# import pandas as pd
import os
# import glob
from pathlib import Path
import shutil

# 定义原始文件夹
Original_Path_A = Path('Original_A')
Original_Path_B = Path('Original_B')

# 将两个原始文件夹中的文件名称(包括文件夹名称)读取为 list 对象。
FileList_A = list(Original_Path_A.glob("*.txt"))
FileList_B = list(Original_Path_B.glob("*.txt"))

# 定义个list,其中是 Original_Path_A 中 Part3 部分在 Original_B 中无对应的文件名称。
Orginal_A_No_Part3 = []

for File_A in FileList_A:
    File_Name_A = os.path.split(File_A)[1].split('.')[0]  # 将文件夹中各个文件的文件名读取出来

    print(File_Name_A)

    # 将 File_Name_A 中的文件名字如下划线为间隔分割为 3 个不一样的部分,分别为 FNA_P1, FNA_P2, FNA_P3;
    FNA_P1 = File_Name_A.split('_')[0]
    FNA_P2 = File_Name_A.split('_')[1]
    FNA_P3 = File_Name_A.split('_')[2]

    print(FNA_P3)

    # 对该操做文件的文件,对 Original_B 下的文件进行对比。
    Pair_Flag = 0
    Distance = 10000
    Have_P3 = 0   # 这里 的标记是看是否存在有FNA_P3,却无 FNB_P3 的状况。
    for File_B in FileList_B:
        File_Name_B = os.path.split(File_B)[1].split('.')[0]

        # 将 File_Name_A 中的文件名字如下划线为间隔分割为 3 个不一样的部分,分别为 FNA_P1, FNA_P2, FNA_P3;
        FNB_P1 = File_Name_B.split('_')[0]
        FNB_P2 = File_Name_B.split('_')[1]
        FNB_P3 = File_Name_B.split('_')[2]

        # 在确保第 3 部分相同的状况下,寻找 Original_B 中第 2 部分最相近的文件。

        if FNB_P3 == FNA_P3:
            Have_P3 = 1
            if Distance > abs(int(FNA_P2) - int(FNB_P2)):
                Distance = abs(int(FNA_P2) - int(FNB_P2))
                Pair_Flag = FNB_P2

    print(Have_P3)
    if Have_P3 == 1:  # 若是B 文件夹中不存在与FNA_P3对应的文件,则不拷贝两个文件。
        # 将 File_Name_A 拷贝到 Result/A 中,文件名不变。
        shutil.copy(File_A, 'Result/A/')

        # 将 Pair_Flag 做为第二部分,将相应的 Original_B 拷贝到 Result/B 中,文件名称改成 FNA_P2 的元素。
        shutil.copy('Original_B/' + FNA_P1 + '_' + Pair_Flag + '_' +
                    FNA_P3 + '.txt', 'Result/B/' + File_Name_A + '.txt')
    else:
        Orginal_A_No_Part3.append(File_Name_A)

print(Orginal_A_No_Part3)