python自制工具----給文件添加前后綴。


PreffixAndSuffix 類:

import os

class PreffixAndSuffix:

    def __init__(self):
        pass

    @staticmethod
    def add_preffix(file_path, preffix):  # 為file_path添加preffix前綴 並返回文件名絕對路徑
        dir_name, filename, extension = PreffixAndSuffix.get_names(file_path)

        new_name = dir_name + preffix + filename + extension
        os.rename(file_path, new_name)
        return new_name

    @staticmethod
    def del_preffix(file_path, preffix):        # 為file_path刪除preffix前綴 並返回文件名絕對路徑
        dir_name, filename, extension = PreffixAndSuffix.get_names(file_path)

        if filename.startswith(preffix):            # 判斷文件名是否以preffix開頭
            filename = filename.partition(preffix)[2]  # ('', preffix, 去掉前綴文件名)[2]
            new_name = dir_name + filename + extension
            os.rename(file_path, new_name)
            return new_name
        else:
            return file_path

    @staticmethod
    def add_suffix(file_path, suffix):  # 為file_path添加preffix后綴 並返回文件名絕對路徑
        dir_name, filename, extension = PreffixAndSuffix.get_names(file_path)

        new_name = dir_name + filename + suffix + extension
        os.rename(file_path, new_name)
        return new_name


    @staticmethod
    def del_suffix(file_path, suffix):  # 為file_path刪除preffix后綴 並返回文件名絕對路徑
        dir_name, filename, extension = PreffixAndSuffix.get_names(file_path)

        if filename.endswith(suffix):  # 判斷文件名是否以preffix開頭
            filename = filename.rpartition(suffix)[0]  # (文件名, suffix, 擴展名)[0]

            new_name = dir_name + filename + extension
            os.rename(file_path, new_name)
            return new_name
        else:
            return file_path

    @staticmethod
    def get_names(file_path):
        file_path = os.path.abspath(file_path)  # 獲取這個文件/文件夾的絕對路徑
        dir_name = os.path.dirname(file_path)  # 獲取所在目錄
        dir_name = dir_name + os.sep  # 為拼接做准備
        filename, extension = os.path.splitext(file_path)  #: 分離文件名與擴展名結果為(filename,擴展名) 如果參數為一個路徑則返回(路徑,'')
        name = filename.rpartition(os.sep)[2]  # (文件目錄名 ,目錄分隔符, 文件名/目錄名)
        names = (dir_name, name, extension)    #(文件所在目錄名, 文件名, 文件擴展名)
        # print(names)
        return names

  

 

測試類:

import os
from PreffixAndSuffix import PreffixAndSuffix


def change_name(file_path):
    pass




def main():

    y_or_n = {'Y': True, 'y': True, 'N': False, 'n': False, '': False}
    method = {'0': PreffixAndSuffix.add_preffix, '1': PreffixAndSuffix.add_suffix, '2': PreffixAndSuffix.del_preffix, '3': PreffixAndSuffix.del_suffix}

    file_path = str(input('請輸入要求改的文件路徑:'))
    designated_suffix_or_preffix = str(input('請輸入指定的文件名前綴或后綴:'))

    while True:
        ecursive_modify = str(input('是否遞歸修改?((Y/N)默認為N)'))
        if ecursive_modify in y_or_n:
            isecursive_modify = y_or_n[ecursive_modify]
            break

    while True:
        designated_suffix_modify = str(input('是否只修改特定后綴文件?((Y/N)默認為N)'))
        if designated_suffix_modify in y_or_n:
            isdesignated_suffix_modify = y_or_n[designated_suffix_modify]
            if isdesignated_suffix_modify:  # 只修改指定后綴的文件
                designated_suffix =  str(input('請輸入指定的后綴(如:.txt、.jpg)'))
                break
            else:
                designated_suffix = ''
                break

    while True:
        tip = '''
        0:添加指定前綴
        1:添加指定后綴
        2:刪除指定前綴
        3:刪除指定后綴
        請輸入: '''
        change_method_num = input(tip)
        if change_method_num in method:     # 判斷是否在方法字典中
            change_method = method[change_method_num]   # 獲取選擇的方法入口地址。
            break

    print('文件名:', file_path)
    print('指定的前綴或后綴:', designated_suffix_or_preffix)
    print('是否遞歸修改:', isecursive_modify)
    print('是否只修改特定后綴文件:', isdesignated_suffix_modify)
    print('指定修改的后綴:', designated_suffix)
    print('選擇方法:',method[change_method_num])


    if not isecursive_modify:   # 如果不遞歸修改
        print('當前執行目錄:', file_path)
        os.chdir(file_path)
        for file in os.listdir(file_path):  # 遍歷當前目錄下所有文件
            abs_path = file_path + os.sep + file    # 拼接文件的絕對路徑
            if os.path.isfile(abs_path):    # 如果是文件
                if abs_path.endswith(designated_suffix):    # 判斷是否為指定后綴。
                    new_name = change_method(abs_path, designated_suffix_or_preffix) # 調用方法字典中的選擇的方法
                    print('已成功改名:', new_name)
        print('-' * 80)

    else:
        for root, dirs, files in os.walk(file_path):    # 遞歸遍歷 file_path
            print('當前執行目錄:', root)
            os.chdir(root)
            print(files)    # 當前目錄下所有文件

            for file in files:  # 遍歷所有文件
                abs_path = root + os.sep + file  # 拼接絕對地址
                if abs_path.endswith(designated_suffix): # 判斷是否為指定后綴
                    new_name = change_method(abs_path, designated_suffix_or_preffix)    # 調用方法字典中的選擇的方法
                    print('已成功改名:', new_name)
            print('-' * 80)



if __name__ == '__main__':
    main()

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM