macOS - os.listdir возвращает двойные элементы, начинающиеся с "."?

Несмотря на это, в папке есть два файла (a.apk, а также b.apk), os.listdirфункция возвращает четыре файла, например._b.apk, ._a.apk, a.apk, а также b.apk. Откуда берутся первые два файла? Как я могу запретить Python перечислять их?

Программный стек:

- OS: macOS Catalina
- Python: 3.7.3

ps Файлы хранятся на внешней флешке, которая отформатирована как ExFAT.

1 ответ

Решение

Откуда берутся первые два файла?

Для этой части см. Этот вопрос: https://apple.stackexchange.com/questions/14980/why-are-dot-underscore-files-created-and-how-can-i-avoid-them

Как я могу запретить Python перечислять их?

Ни то, ни другое os.listdir() ни os.walk() ни os.path.walk() (только в Python 2) имеют параметр, немедленно подавляющий такие файлы, что касается базовой ОС, это обычные файлы. Это различие в пользовательском интерфейсе.

Так что вам придется делать это самостоятельно:

files = [i for i in os.listdir(".") if not i.startswith("._")]

был бы один вариант.

Если вы хотите подавить все скрытые файлы (т.е. все файлы, начинающиеся с .), делать

files = [i for i in os.listdir(".") if not i.startswith(".")]

вместо.

Другие вопросы по тегам