Как удалить pycache из репозитория

  • автор:

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

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

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

Это приведет к рекурсивному удалению всех файлов * .pyc и каталогов __pycache__ в текущем каталоге.

Я нашел ответ сам, когда набрал pyclean как pycclean:

Бег py3clean . вычистил это очень хорошо.

macOS и Linux

find Реализация BSD на macOS отличается от GNU find — это совместимо как с BSD, так и с GNU find. Начните с полной реализации, используя -name и -o для или — Поместите эту функцию в ваш .bashrc файл:

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

GNU только для поиска

Это решение GNU find, only (то есть Linux), но я чувствую, что с регулярным выражением это немного лучше:

Любая платформа, использующая Python 3

В Windows вы, вероятно, даже не имеете find . Однако у вас, вероятно, есть Python 3, который, начиная с 3.4, имеет удобный pathlib модуль:

-B Флаг говорит Python не писать .pyc файлы. (См. Также PYTHONDONTWRITEBYTECODE переменную среды.)

Вышеперечисленные нарушения приводят к списку понятий для зацикливания, но при использовании python -c стиль является скорее второстепенной задачей. В качестве альтернативы мы могли бы злоупотреблять (например) __import__ :

Критика ответа

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

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

Со xargs страницы руководства :

Найдите файлы с именем core в каталоге / tmp или ниже и удалите их, но более эффективно, чем в предыдущем примере (потому что мы избегаем необходимости использовать fork (2) и exec (2) для запуска rm, и нам не нужно дополнительный процесс xargs).

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

Каков ЛУЧШИЙ способ очистить все __pycache__ папки и .pyc/.pyo файлы из проекта python3. Я видел, как несколько пользователей предлагали pyclean сценарий, связанный с Debian, но это не удаляет папки. Мне нужен простой способ очистить проект перед отправкой файлов на мой DVS.

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

Это приведет к рекурсивному удалению всех файлов * .pyc и каталогов __pycache__ в текущем каталоге.

macOS и Linux

find Реализация BSD в macOS отличается от GNU find — она ​​совместима как с BSD, так и с GNU find. Начните с реализации подстановки, используя -name и -o for или — Поместите эту функцию в свой .bashrc файл:

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

Только для поиска GNU

Это решение только для GNU find (например, для Linux), но я считаю, что с регулярным выражением оно немного лучше:

Любая платформа, использующая Python 3

В Windows у вас, вероятно, даже нет find . Однако у вас, вероятно, есть Python 3, который, начиная с версии 3.4, имеет удобный pathlib модуль:

-B Флаг говорит Python не писать .pyc файлы. (См. Также PYTHONDONTWRITEBYTECODE переменную среды.)

Вышеупомянутые злоупотребления перечисляют понимание циклов, но при использовании python -c стиль является скорее второстепенным вопросом. В качестве альтернативы мы могли бы злоупотреблять (например) __import__ :

Критика ответа

В верхнем ответе говорилось:

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

На xargs странице руководства :

Find files named core in or below the directory /tmp and delete them, but more efficiently than in the previous example (because we avoid the need to use fork(2) and exec(2) to launch rm and we don’t need the extra xargs process).

Python3 project remove __pycache__ folders and .pyc files

This will remove all *.pyc files and __pycache__ directories recursively in the current directory.

macOS & Linux

BSD’s find implementation on macOS is different from GNU find — this is compatible with both BSD and GNU find. Start with a globbing implementation, using -name and the -o for or — Put this function in your .bashrc file:

Then cd to the directory you want to recursively clean, and type pyclean .

GNU find-only

This is a GNU find, only (i.e. Linux) solution, but I feel it’s a little nicer with the regex:

Any platform, using Python 3

On Windows, you probably don’t even have find . You do, however, probably have Python 3, which starting in 3.4 has the convenient pathlib module:

The -B flag tells Python not to write .pyc files. (See also the PYTHONDONTWRITEBYTECODE environment variable.)

The above abuses list comprehensions for looping, but when using python -c , style is rather a secondary concern. Alternatively we could abuse (for example) __import__ :

Critique of an answer

The top answer used to say:

This would seem to be less efficient because it uses three processes. find takes a regular expression, so we don’t need a separate invocation of grep . Similarly, it has -delete , so we don’t need a separate invocation of rm —and contrary to a comment here, it will delete non-empty directories so long as they get emptied by virtue of the regular expression match.

From the xargs man page:

Find files named core in or below the directory /tmp and delete them, but more efficiently than in the previous example (because we avoid the need to use fork(2) and exec(2) to launch rm and we don’t need the extra xargs process).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *