Проект Python3 удаляет папки pycache и.файлы pyc
каков наилучший способ очистить все __pycache__
папки и .pyc/.pyo
файлы из проекта python3. Я видел, как несколько пользователей предлагают pyclean
скрипт в комплекте с Debian, но это не удаляет папки. Я хочу простой способ очистить проект, прежде чем нажимать файлы на мои DVS.
7 ответов:
вы можете сделать это вручную с помощью следующей команды:
find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf
это удалит все *.pyc файлы и __pycache__ каталоги рекурсивно в текущем каталоге.
Я сам нашел ответ, когда я ошибся pyclean как pycclean:
No command 'pycclean' found, did you mean: Command 'py3clean' from package 'python3-minimal' (main) Command 'pyclean' from package 'python-minimal' (main) pycclean: command not found
под управлением
py3clean .
очистил его очень красиво.
Я думаю, что это превосходит верхний ответ-поместите эту функцию в свой
.bashrc
file:pyclean () { find . -regex '.*\(__pycache__\|\.py[co]\)' -delete }
затем
cd
в каталог, который вы хотите рекурсивно очистить, и введитеpyclean
.критика верхнего ответа
верхний ответ говорит:
find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf
это казалось бы менее эффективным, потому что он использует три процесса.
find
принимает регулярное выражение, поэтому нам не нужен отдельный вызовgrep
. Точно так же-delete
, так что нам не нужен отдельный вызовrm
- и вопреки комментарию здесь, это будет удалить непустые каталоги, пока они опустошаются в силу соответствия регулярных выражений.С
xargs
на странице:find /tmp -depth -name core -type f -delete
найдите файлы с именем core в каталоге /tmp или ниже и удалите их, но более эффективно, чем в предыдущем примере (потому что мы избегаем необходимость использования fork (2) и exec (2) для запуска rm и нам не нужно дополнительный процесс xargs).
так как это проект Python 3, вам нужно только удалить
__pycache__
справочники -- все.pyc
/.pyo
файлы внутри них.find . -type d -name __pycache__ -exec rm -r {} \+
или его более простая форма,
find . -type d -name __pycache__ -delete
который по какой-то причине не работал для меня (файлы были удалены, но каталоги не были), поэтому я включаю оба для полноты картины.
кроме того, если вы делаете это в каталоге, который находится под контролем версий, вы можете сказать RCS игнорировать
__pycache__
папки рекурсивно. Затем, в нужный момент, просто очистите все игнорируемые файлы. Это, вероятно, будет более удобно, потому что там, вероятно, будет больше, чтобы очистить, чем просто__pycache__
.
Это мой псевдоним, который работает как с Python 2, так и с Python 3, удаляя все
.pyc .pyo
файлы__pycache__
каталоги рекурсивно.alias pyclean='find . -name "*.py[c|o]" -o -name __pycache__ -exec rm -rf {} +'
большое спасибо за другие ответы, на их основе это то, что я использовал для моего пакета в Debian!--1-- > file:
#!/bin/sh set -e deb_package='package-name' python_package='package_name' if which pyclean >/dev/null 2>&1; then py3clean -p $deb_package else dpkg -L $deb_package | grep ${python_package}$ | while read file do find ${file} -type d -name __pycache__ -exec rm -r {} \+ done fi