Проект Python3 удаляет папки pycache и.файлы pyc

каков наилучший способ очистить все __pycache__ папки и .pyc/.pyo файлы из проекта python3. Я видел, как несколько пользователей предлагают pyclean скрипт в комплекте с Debian, но это не удаляет папки. Я хочу простой способ очистить проект, прежде чем нажимать файлы на мои DVS.

7 ответов


вы можете сделать это вручную с помощью следующей команды:

find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf

это удалит все *.пыць файлы и _ _ _ 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 . очистил его очень красиво.


Я думаю, что это превосходит верхний ответ-поместите эту функцию в свой :

pyclean () {
    find . -regex '.*\(__pycache__\|\.py[co]\)' -delete
}

затем cd в каталог, который вы хотите рекурсивно очистить, и введите pyclean.

критика верхнего ответа

верхний ответ говорит:

find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf

это кажется менее эффективным, потому что он использует три процесса. find принимает регулярное выражение, поэтому нам не нужен отдельный вызов grep. Точно так же -delete, поэтому нам не нужен отдельный вызов rm - и вопреки комментарию здесь, это будет удалить непустые каталоги, пока они опустошаются в силу соответствия регулярному выражению.

С xargs man page:

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 :

#!/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

почему бы просто не использовать rm -rf __pycache__? Запустить git add -A затем удалить их из репозитория и добавить __pycache__/ в свой .файла.gitignore