Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan pengelas fail berdasarkan Python

Bagaimana untuk melaksanakan pengelas fail berdasarkan Python

王林
王林ke hadapan
2023-06-03 16:46:031541semak imbas

Dengan menyesuaikan direktori fail yang perlu diisih, semua fail di bawah direktori boleh dikelaskan mengikut format fail.

Bagaimana untuk melaksanakan pengelas fail berdasarkan Python

Timbunan teknologi python yang digunakan untuk melaksanakan logik ialah penggunaan komprehensif tiga perpustakaan standard os, glob dan shutil untuk melengkapkan organisasi fail automatik.

Import ketiga-tiga modul pemprosesan fail ini ke dalam blok kod masing-masing dan masukkan operasi pembangunan seterusnya.

# It imports the os module.
import os

# Shutil is a module that provides a number of high-level operations on files and collections of files.
import shutil

# The glob module finds all the pathnames matching a specified pattern according to the rules used by the Unix shell,
# although results are returned in arbitrary order. No tilde expansion is done, but *, ?, and character ranges expressed
# with [] will be correctly matched.
import glob
import sys

Tetapkan uncatched_dir bagi direktori fail yang perlu dikelaskan dan target_dir bagi direktori storan fail terperingkat supaya ia boleh dimasukkan secara manual.

# Asking the user to input the path of the directory that contains the files to be sorted.
uncatched_dir = input('请输入待分类的文件路径:\n')

# It checks if the uncatched_dir is empty.
if uncatched_dir.strip() == '':
    print('待分类的文件夹路径不能为空!')
    sys.exit()

# Asking the user to input the path of the directory that contains the files to be sorted.
target_dir = input('请输入分类后文件存放的目标路径:\n')

# It checks if the target_dir is empty.
if target_dir.strip() == '':
    print('分类后的文件存放路径不能为空!')
    sys.exit()

Bagaimana untuk melaksanakan pengelas fail berdasarkan Python

Semak sama ada laluan direktori storan fail yang dimasukkan selepas pengelasan wujud, kerana ia berkemungkinan memasuki laluan baharu, dan jika ia tidak wujud, buat laluan baharu.

# It checks if the target_dir exists. If it does not exist, it creates a new directory in the current working directory.
if not os.path.exists(target_dir):
    # It creates a new directory in the current working directory.
    os.mkdir(target_dir)

Tentukan pembolehubah fail_move_num untuk bilangan fail yang dialihkan dan pembolehubah dir_new_num untuk bilangan folder yang baru dibuat untuk merekodkan hasil pengisihan fail.

# A variable that is used to count the number of files that have been moved.
file_move_num = 0

# A variable that is used to count the number of new directories that have been created.
dir_new_num = 0

Lintas direktori folder uncatched_dir yang perlu diisih dan isih semua jenis fail secara automatik di bawah direktori.

# A for loop that iterates through all the files in the uncatched_dir directory.
for file_ in glob.glob(f'{uncatched_dir}/**/*', recursive=True):

    # It checks if the file is a file.
    if os.path.isfile(file_):

        # It gets the file name of the file.
        file_name = os.path.basename(file_)

        # Checking if the file name contains a period.
        if '.' in file_name:

            # Getting the suffix of the file.
            suffix_name = file_name.split('.')[-1]

        else:

            # Used to classify files that do not have a suffix.
            suffix_name = 'others'

        # It checks if the directory exists. If it does not exist, it creates a new directory in the current working
        # directory.
        if not os.path.exists(f'{target_dir}/{suffix_name}'):

            # It creates a new directory in the current working directory.
            os.mkdir(f'{target_dir}/{suffix_name}')

            # Adding 1 to the variable dir_new_num.
            dir_new_num += 1

        # It copies the file to the target directory.
        shutil.copy(file_, f'{target_dir}/{suffix_name}')

        # Adding 1 to the variable file_move_num.
        file_move_num += 1

Nota: Untuk mengelakkan pengecualian yang disebabkan oleh pemindahan folder, terutamanya cakera sistem, salinan digunakan di sini, iaitu fungsi shutil.copy.

Akhir sekali, gunakan fungsi cetakan untuk mencetak bilangan kategori fail dan bilangan folder baharu.

print(f'整理完成,有{file_move_num}个文件分类到了{dir_new_num}个文件夹中!\n')

input('输入任意键关闭窗口...')

Untuk mengelakkan penutupan tetingkap arahan terus selepas pelaksanaan program selesai, fungsi input digunakan di atas untuk mengekalkan kesan tetingkap yang dijeda.

Bagaimana untuk melaksanakan pengelas fail berdasarkan Python

Bagaimana untuk melaksanakan pengelas fail berdasarkan Python

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengelas fail berdasarkan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam