2016-08-25 2 views
0

Я хочу, чтобы эта функция удаляла файлы. Он делает это правильно, но это также удаляет папки, которые я не хочу.Удалить файл начинаются с

Я также получаю сообщение об ошибке во время выполнения:

Access is denied: 'C:/temp3\\IDB_KKK 

В папке temp3 я есть:

IDB_OPP.txt 
IDB_KKK - folder 

Код:

def delete_Files_StartWith(Path,Start_With_Key): 
    my_dir = Path 
    for fname in os.listdir(my_dir): 
     if fname.startswith(Start_With_Key): 
      os.remove(os.path.join(my_dir, fname)) 

delete_Files_StartWith("C:/temp3","IDB_") 
+0

Укороченная формулировка, фиксированная структура предложения, улучшенное форматирование кода. – Prune

ответ

2

Используйте следующее, чтобы проверить, если это справочник:

os.path.isdir(fname) //if is a directory 
0

Вы хотите удалить файлы рекурсивно (т. включая файлы, которые живут в подкаталогах : из Path), не удаляя сами эти подкаталоги?

import os 
def delete_Files_StartWith(Path, Start_With_Key): 
    for dirPath, subDirs, fileNames in os.walk(Path): 
     for fileName in fileNames: # only considers files, not directories 
      if fileName.startswith(Start_With_Key): 
       os.remove(os.path.join(dirPath, fileName)) 
1

Чтобы удалить каталог и все его содержание, use shutil.

Модуль shutil предлагает ряд высокоуровневых операций над файлами и коллекциями файлов.

Обратитесь к вопросу How do I remove/delete a folder that is not empty with Python?

import shutil 

.. 
    if fname.startswith(Start_With_Key): 
     shutil.rmtree(os.path.join(my_dir, fname)) 
+1

Это может быть то, что хочет OP (учитывая достаточно широкую интерпретацию текста вопроса о ветре v.1) * или *, это может быть противоположно тому, что хочет OP (удалять файлы, но * не * папки, как в интерпретация Prune взяла для редактирования v.2) – jez

+0

Согласовано. Если это так, проверка isdir() верна. – MatsLindh

0

Я установил его следующим образом:

def delete_Files_StartWith(Path,Start_With_Key): 
    os.chdir(Path) 
    for fname in os.listdir("."): 
     if os.path.isfile(fname) and fname.startswith(Start_With_Key): 
      os.remove(fname) 

спасибо вам все.

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