Используя Python и ftplib, я пишу общую функцию, чтобы проверить, являются ли элементы в каталоге FTP файлами или каталогами. Поскольку использование функции MLSD может не обязательно работать со всеми серверами (один из моих вариантов использования не предусматривает этого), я прибег к этому эффективному, но грубому способу определения ее, пытаясь сменить каталог на объект и если объект файла возникает исключение, и тип файла устанавливается соответствующим образом.
file_type = ''
try:
ftp.cwd(item_name)
file_type = 'dir'
ftp.cwd(cur_path)
except ftplib.error_perm:
file_type = 'file'
Я просмотрел документацию по Интернету и библиотеке в поисках других методов, но не могу найти тех, которые подойдут для большинства случаев.
Например, используя функцию dir
, я могу проверить, является ли первый символ 'd'
, и это может определить его, однако дальнейшее чтение показало, что не весь вывод имеет одинаковый формат.
Самый большой недостаток, который я вижу в этом методе, заключается в том, что у меня нет разрешения на изменение каталога в указанную папку; следовательно, он будет рассматриваться как файл.
Есть ли что-то, чего мне не хватает, или более чистый способ сделать это?