Необязательные параметры в классах в Python

#python #file #class #operating-system

#python #файл #класс #операционная система

Вопрос:

Это мой код на python для выполнения таких операций, как удаление, перемещение и переименование нескольких файлов. Этот код отлично работает для всех типов файлов. Предположим, я хочу добавить необязательный параметр, например, для удаления файлов с расширением «.pdf», как я могу добавить эту опцию? Например, его добавление не обязательно, но если вы передадите его, все файлы pdf будут удалены.

Я просто хочу добавить необязательный параметр, который при передаче выполняет действие только для этих файлов

 import os


class FileOperation:
    def __init__(self, file_loc):
        self.file_loc = file_loc

    def file_location(self):
        print("Source folder contents: ")
        print()
        for i in os.listdir(self.file_loc):
            print(i)
        print()

    def rename_bulk_files(self):
        c = 0
        path = self.file_loc
        for i in os.listdir(self.file_loc):
            dot_index = i.index('.')
            src = os.path.join(path, i)
            dst = os.path.join(path, i[0:dot_index]   "_"   str(c)   i[dot_index:])
            os.rename(src, dst)
            c  = 1
        return "Renaming of files has finished"

    def delete_bulk_files(self):
        path = self.file_loc
        for i in os.listdir(self.file_loc):
            file_path = os.path.join(path, i)
            os.remove(file_path)
        print("All files have been deleted")

    def move_bulk_files(self):
        path = self.file_loc
        destination_folder = input("Enter the destination folder / folders separated by a comma: ")
        for i in os.listdir(self.file_loc):
            src_path = os.path.join(path, i)
            des_path = os.path.join(destination_folder, i)
            os.replace(src_path, des_path)
        print("All files have been moved to the destination folder")


source_folder = input("Enter source folder/ folders locations separated by a comma: ")


my_file_operations = FileOperation(source_folder)
my_file_operations.delete_bulk_files()
  

Ответ №1:

 files_extension = input(“Enter files extension (defaults to all files if not provided): “)
  

А затем в delete_bulk_files :

 
file_path = os.path.join(path, i)
if not files_extension or file_path.endswith(files_extension):
  os.remove(file_path)
  

Комментарии:

1. Несмотря на то, что это работает, если я ничего не введу в file_extension , по умолчанию все файлы должны быть удалены

2. Правильно, если вы нажмете enter без указания расширения, он должен удалить все файлы