2015-09-04 5 views
3

Я пытаюсь написать сценарий, который автоматически удалит все временные файлы в определенной папке, и я заметил, что этот скрипт также удаляет все текстовые файлы в этой папке. Может кто-нибудь объяснить, почему он это делает?Почему этот скрипт Python удаляет файлы «.txt», а также все файлы «.tmp»?

import os 
    path = 'C:\scripts27' 
    for root, dirs, files in os.walk(path): 
     for currentFile in files: 
      print "processing file: " + currentFile 
      extensions=('.tmp') 
      if any(currentFile.lower().endswith(ext) for ext in extensions): 
       os.remove(os.path.join(root, currentFile)) 

Я запускаю этот скрипт, используя Python 2.7.10 на 64-разрядном компьютере под управлением Windows 8.1.

Спасибо!

ответ

7

Я предполагаю, что вы имели в виду предоставление списка расширений. Но в вашем случае extensions определяется как ('.tmp'), который является не кортежем, а строкой. Это заставляет ваш код перебирать все файлы и проверять имена, заканчивающиеся на ., t, m и p, тем самым удаляя файлы .txt.

Исправление состоит в том, чтобы определить расширения как ['.tmp'] или ('.tmp',) (обратите внимание на завершающий ,).

+0

Вот и все! Спасибо. – Basper82

+1

@ Basper82 - '' 'if currentFile.lower(). Endswith ('. Tmp'): do stuff'''. – wwii

+0

Удивительный! Это тоже работает. – Basper82