Задать вопрос
@stulevtoday
Дурак, глупо, но самокритично.

При разбиении пути возникает ошибка. Как пофиксить?

При выполнении данной части кода возникает ошибка, не понимаю в чём проблема.
export_folder_path = 'D://export//'
repricient = 'local.xlsx'
filename = os.path.basename(export_folder_path + recipient)
ftype, encoding = mimetypes.guess_type(export_folder_path + recipient)
file_type, subtype = ftype.split("/")

Ошибка:
Traceback (most recent call last):
  File "D:\src\main.py", line 14, in <module>
    post_mail(database.keys())
  File "D:\src\send_files.py", line 24, in post_mail
    file_type, subtype = ftype.split("/")
AttributeError: 'NoneType' object has no attribute 'split'
  • Вопрос задан
  • 98 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Читай документацию же.
The return value is a tuple (type, encoding) where type is None if the type can’t be guessed (missing or unknown suffix) or a string of the form 'type/subtype', usable for a MIME content-type header.

Т.е. для неизвестных типов у тебя в ftype попадёт None, а ты этого не проверяешь.

EDIT: А вообще есть смысл делать guess_type()? Если у тебя тип файла известен заранее, то можно захардкодить и правильный mime-тип.
Ответ написан
Комментировать
Sergei_Erjemin
@Sergei_Erjemin
Улыбайся, будь самураем...
Под widows путь надо записать так:
'D:\\export\\'
или юникс-стайл (тоже работает):
'D:/export/'

соответсвенно разбиваешь через:
filename.replace('\\', '/').split('/')
или:
re.split( r'[\\/]', filename)
а лучше:
os.path.normpath(path).split(os.sep)
и не забудь про обработку исключений, для случая если файл лежит в корне юниикс-системы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы