2015-08-20 4 views
0

вы знаете специальные файлы или папки, где первое место - это точка. Например: .example_folder или .examaple_file. Подумайте о файлах .htaccess/.htpassword. Я знаю, как удалять папки и файлы обычным способом с помощью Python. Но как я могу удалить некоторые специальные файлы, как это? Другая проблема заключается в том, что специальные файлы не имеют расширений, таких как .txt oder .jpg и т. Д. Когда я пытаюсь удалить специальные файлы/папки обычным способом, Python пропускает все специальные файлы/папку. Есть ли у кого-то идеи?Python: удалите специальный файл

def delete_temp_update_files(path_files): 

    files = glob.glob(path_files) 
    for f in files: 
      os.remove(f) 

def delete_temp_update_folders(folder_path, path_files): 

    folder_paths = glob.glob(folder_path) 

    ''' 
    First, all folders are deleted in this current folder (folder_paths). 
    ''' 
    if not folder_paths: 
     ''' 
     The list (folder_paths) is empty, that means there aren't somer folders. 
     In this case its enough to delete all files - everything including 
     hidden files. 
     ''' 
     result_files = delete_temp_update_files(path_files) 
     return result_files 
    else: 
     ''' 
     There are some folders. Before the files are deleted, the folder must be deleted. 
     ''' 
     for folder_element in folder_paths: 
      shutil.rmtree(folder_element, ignore_errors=True) 

     ''' 
     Now all folders are delete have been deleted. Netx all files should be deleted. 
     ''' 
     result_files = delete_temp_update_files(path_files) 
     return result_files 

def on_delete_files_folders(update_temp_zip_file): 
    # The variable named (all_files) shows all files - everything including hidden files 
    all_files = os.path.join(update_temp_zip_file, '*') 

    # The variable named (all_folders) shows all folders in current folder. 
    all_folders = os.path.join(update_temp_zip_file, '*/') 

    delete_temp_update_folders(all_folders, all_files) 

on_delete_files_folders("PATH/TO/YOUR/FOLDER") 
+0

Можете ли вы показать свой скрипт удаления? Thx – FirebladeDan

ответ

0

Ваше решение довольно сложное. Вы можете использовать мой сценарий ниже:

import os 

def del_recursive(path): 
    for file in os.listdir(path): 
    file = os.path.join(path, file) 
    if os.path.isdir(file): 
     try: 
     os.rmdir(file) 
     except: 
     del_recursive(file) 
     os.rmdir(file) 
    else: 
     os.remove(file) 

Если вы хотите удалить все в директории, которую вы также можете использовать shutil.rmtree(). Оба варианта работают на Python 2.7.3.

+0

Мое решение довольно сложное? Зачем? Вернитесь к своему коду. Этот скрипт удаляет папку назначения. Например, когда я пишу 'del_recursive ('D: \ Dan \ Python \ Tutorials \ del_folder')', он удалит папку del_folder, а не только содержимое папки del_folder. В моем случае фрагмент работает, но я не могу удалить специальный файл/папку. В моей папке у меня есть две специальные папки: .git & .idea и специальный файл с именем .htaccess. Мой скрипт пропускает специальные файлы и папки. Это означает: все файлы и папки были удалены в текущей папке, за исключением конкретных файлов и папок. – Sophus

+0

Ваше решение довольно сложное, потому что вы импортируете лишние пакеты и создаете множество функций. Используйте подходящие пакеты для своих задач. Для этого «import os» является enogh. Мой скрипт удаляет внутренние файлы рекурсивно. Кстати, я его отредактировал, поэтому он не удаляет папку назначения. – Balas

Смежные вопросы