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(".")]
вместо.