Я написал скрипт для удаления всех файлов .py и .pyc в заданном подкаталоге под названием «миграции». Конечная цель — удалить все файлы миграции из моего проекта django, поэтому есть несколько подпапок, называемых «миграции», и я хотел бы удалить все .py и .pyc (кроме init.py) из этих папок. Сценарий, который я написал ниже, работает, но я новичок в python и считаю, что должен быть лучший способ, чем все вложенные циклы. Какие-либо предложения? Это система Windows, которая все усложняет для меня.
import os
import sys
def delete_py(path, subfolder):
try:
if os.path.exists(path):
for (root, dirs, files) in os.walk(path):
for dir in dirs:
if dir == subfolder:
goto = os.path.join(root, dir)
for (root, dirs, files) in os.walk(goto):
for file in files:
if (file.lower().endswith('.py') |
file.lower().endswith('.pyc')) and
file != '__init__.py':
print('file: ', file)
# will change to os.remove once finsihed
except:
print('Unable to delete files')
if __name__ == "__main__":
current = os.getcwd()
delete_py(current, 'migrations')
migrations
кos.walk()
? Вы без нужды являетесь и всем остальным. - person Martijn Pieters   schedule 28.01.2019|
! Это побитовое или, а не логическая логика ИЛИ. Иstr.endswith()
берет набор опций для проверки, так чтоfile.lower().endswith(('*.py', '*.pyc'))
достаточно. - person Martijn Pieters   schedule 28.01.2019