python 删除系统中的文件(按时间,大小,扩展名)
Hafeezul Kareem Shaik 人气:0按时间删除文件
# importing the required modules import os import shutil import time # main function def main(): # initializing the count deleted_folders_count = 0 deleted_files_count = 0 # specify the path path = "/PATH_TO_DELETE" # specify the days days = 30 # converting days to seconds # time.time() returns current time in seconds seconds = time.time() - (days * 24 * 60 * 60) # checking whether the file is present in path or not if os.path.exists(path): # iterating over each and every folder and file in the path for root_folder, folders, files in os.walk(path): # comparing the days if seconds >= get_file_or_folder_age(root_folder): # removing the folder remove_folder(root_folder) deleted_folders_count += 1 # incrementing count # breaking after removing the root_folder break else: # checking folder from the root_folder for folder in folders: # folder path folder_path = os.path.join(root_folder, folder) # comparing with the days if seconds >= get_file_or_folder_age(folder_path): # invoking the remove_folder function remove_folder(folder_path) deleted_folders_count += 1 # incrementing count # checking the current directory files for file in files: # file path file_path = os.path.join(root_folder, file) # comparing the days if seconds >= get_file_or_folder_age(file_path): # invoking the remove_file function remove_file(file_path) deleted_files_count += 1 # incrementing count else: # if the path is not a directory # comparing with the days if seconds >= get_file_or_folder_age(path): # invoking the file remove_file(path) deleted_files_count += 1 # incrementing count else: # file/folder is not found print(f'"{path}" is not found') deleted_files_count += 1 # incrementing count print(f"Total folders deleted: {deleted_folders_count}") print(f"Total files deleted: {deleted_files_count}") def remove_folder(path): # removing the folder if not shutil.rmtree(path): # success message print(f"{path} is removed successfully") else: # failure message print(f"Unable to delete the {path}") def remove_file(path): # removing the file if not os.remove(path): # success message print(f"{path} is removed successfully") else: # failure message print(f"Unable to delete the {path}") def get_file_or_folder_age(path): # getting ctime of the file/folder # time will be in seconds ctime = os.stat(path).st_ctime # returning the time return ctime if __name__ == '__main__': main()
需要在上面的代码中调整以下两个变量
days = 30 path = "/PATH_TO_DELETE"
按大小删除文件
# importing the os module import os # function that returns size of a file def get_file_size(path): # getting file size in bytes size = os.path.getsize(path) # returning the size of the file return size # function to delete a file def remove_file(path): # deleting the file if not os.remove(path): # success print(f"{path} is deleted successfully") else: # error print(f"Unable to delete the {path}") def main(): # specify the path path = "ENTER_PATH_HERE" # put max size of file in MBs size = 500 # checking whether the path exists or not if os.path.exists(path): # converting size to bytes size = size * 1024 * 1024 # traversing through the subfolders for root_folder, folders, files in os.walk(path): # iterating over the files list for file in files: # getting file path file_path = os.path.join(root_folder, file) # checking the file size if get_file_size(file_path) >= size: # invoking the remove_file function remove_file(file_path) else: # checking only if the path is file if os.path.isfile(path): # path is not a dir # checking the file directly if get_file_size(path) >= size: # invoking the remove_file function remove_file(path) else: # path doesn't exist print(f"{path} doesn't exist") if __name__ == '__main__': main()
调整以下两个变量。
path = "ENTER_PATH_HERE" size = 500
按扩展名删除文件
在某些情况下,您想按文件的扩展名类型删除文件。假设.log文件。我们可以使用该os.path.splitext(path)方法找到文件的扩展名。它返回一个元组,其中包含文件的路径和扩展名。
# importing os module import os # main function def main(): # specify the path path = "PATH_TO_LOOK_FOR" # specify the extension extension = ".log" # checking whether the path exist or not if os.path.exists(path): # check whether the path is directory or not if os.path.isdir(path): # iterating through the subfolders for root_folder, folders, files in os.walk(path): # checking of the files for file in files: # file path file_path = os.path.join(root_folder, file) # extracting the extension from the filename file_extension = os.path.splitext(file_path)[1] # checking the file_extension if extension == file_extension: # deleting the file if not os.remove(file_path): # success message print(f"{file_path} deleted successfully") else: # failure message print(f"Unable to delete the {file_path}") else: # path is not a directory print(f"{path} is not a directory") else: # path doen't exist print(f"{path} doesn't exist") if __name__ == '__main__': # invoking main function main()
不要忘记更新上面代码中的path和extension变量,以满足您的要求。
加载全部内容