Python-эквивалент opendir в Perl

По сути, я ищу способ вернуть дескриптор каталога в python, немного похоже на то, как perl может делать что-то вроде этого ...

opendir CWD .

см. http://perldoc.perl.org/5.8.9/functions/opendir.html

Затем CWD можно использовать в качестве дескриптора для указания на каталог, например *CWD, в файловых операциях.

Ближайшее, что я встречал в python, - open (), но он не возвращает файловые дескрипторы / указатели и не работает с каталогами.


person Mike H    schedule 06.06.2018    source источник
comment
Тег не прошел, это для python 2.7   -  person Mike H    schedule 06.06.2018
comment
Нет ответов? Это неутешительно :(   -  person Mike H    schedule 07.06.2018
comment
Ваш настоящий вопрос Как мне перечислить все файлы каталога? Если нет, поясните, пожалуйста.   -  person rustyx    schedule 07.06.2018
comment
Как вы собираетесь использовать эту ручку?   -  person melpomene    schedule 07.06.2018


Ответы (1)


Функция scandir открывает дескриптор и позволяет многократно просматривать каждый файл. Это полезно по той же причине, что и opendir: это намного эффективнее, когда может быть большое количество файлов:

https://docs.python.org/3/library/os.html#os.scandir

Другое использование opendir - это возможность сохранять ссылку на индексный дескриптор, а не на путь.

Генератор, возвращаемый scandir, может быть передан, как CWD, и он сохранит «inode-подобные» функциональные возможности CWD. Например, вы можете получить генератор для scandir, а затем переименовать базовую папку, и генератор останется действующим.

Однако его нельзя «вернуть назад» в начало. AFAICT, это единственное, что Perl может делать, чего не может python.

person Erik Aronesty    schedule 28.05.2020