Проект 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