удалить продолжение *.pyc

В продолжение этот вопрос у меня есть новый вопрос:

Что происходит внутри os.remove(module_name) и del sys.modules["module_name"]?


person user46646    schedule 20.04.2009    source источник
comment
Нет. Либо отредактируйте свой исходный пост, либо переформулируйте его в актуальный вопрос.   -  person Josh Hunt    schedule 20.04.2009
comment
Вы должны сказать, что вы действительно хотите сделать? Удаление файлов .pyc обычно не требуется, так зачем вам это делать?   -  person nosklo    schedule 20.04.2009
comment
-1: для этого нет варианта использования. Это не имеет значения ни при каких мыслимых обстоятельствах.   -  person S.Lott    schedule 20.04.2009


Ответы (3)


Короткий ответ: os.remove(module_name) удалит файл из файловой системы. del sys.modules["module_name"] удалит модуль из кэша ранее загруженных модулей, поддерживаемых текущим интерпретатором Python.

В Python, когда вы импортируете модуль, интерпретатор проверяет, существует ли файл .pyc с тем же именем, что и файл .py, который вы пытаетесь импортировать. Если есть, и если файл .py не изменился с момента импорта файла .pyc, то Python загрузит файл .pyc (что значительно быстрее).

Если файл .pyc не существует или файл .py был изменен с момента создания файла .pyc, загружается файл .py и создается новый файл .pyc. (Стоит отметить, что простой запуск файла Python, скажем, test.py не приведет к созданию test.pyc. Это происходит только при importing модулях.)

sys.modules совсем другое дело. Чтобы ускорить код, который дважды импортирует один и тот же модуль, Python поддерживает список модулей, которые были импортированы во время текущего сеанса интерпретатора. Если импортируемый модуль находится в sys.modules, то будет прочитана кешированная версия (ни .py, ни .pyc файлы на диске проверяться не будут). Python предоставляет встроенную функцию reload(), которая позволяет обойти кеш модуля и принудительно перезагрузить с диска.

Чтобы получить дополнительную информацию о системе модулей Python, см. документацию по модулям.

person Rick Copeland    schedule 20.04.2009

Я запускаю много таких приложений

import os

os.system('attrib +H *.pyc /S')

В Windows это скрывает любые видимые скомпилированные файлы при запуске приложения - они дают мне пипсы.

person knowingPark    schedule 19.10.2010
comment
Боже мой.. Ты гений! Я получаю hibigeebies из-за хаоса, который они создают в структуре моего проекта! - person Torxed; 04.02.2013

мой oneliner для этой работы:

find . -name *.pyc |xargs rm

NB: вам нужен Linux (или Unix-подобная ОС)

person Community    schedule 05.10.2010