Форум сайта python.su
0
Пытаюсь загрузить файл на ftp-сервер с каталога, в которому содержится кириллица:
from ftplib import FTP file = '\\\\server.domain\\for_all\\НА САЙТ\\file1.xlsx' ftp = FTP('ftp.ru') ftp.login() with open(file, 'rb') as fobj: ftp.storbinary('STOR ' + file, fobj, 1024) #UnicodeEncodeError: 'latin-1' codec can't encode characters in position 29-30: ordinal not in range(256) ftp.quit()
Отредактировано The_Immortal (Сен. 16, 2020 15:50:29)
Офлайн
1
Файл на локалке,то есть на диске? Ехель не пробовал грузить на фтп,только текстовики с папками.
Офлайн
0
Ser5+, файл на шаре, но не в этом дело. И также проблема не в его расширении, а то, что в пути к этому файлу содержится кириллица.
Отредактировано The_Immortal (Сен. 16, 2020 16:28:55)
Офлайн
857
The_ImmortalПопробуй в utf-8 перекодировать.
Как победить указанную ошибку?
fpath = r'\\server.domain\for_all\НА САЙТ\file1.xlsx'.encode('utf-8')
>>> fpath = r'\\server.domain\for_all\НА САЙТ\file1.xlsx'.encode('utf-8') >>> fpath b'\\\\server.domain\\for_all\\\xd0\x9d\xd0\x90 \xd0\xa1\xd0\x90\xd0\x99\xd0\xa2\\file1.xlsx' >>> >>> fpath = r'\\server.domain\for_all\НА САЙТ\file1.xlsx'.encode('utf-8').decode('latin1') >>> fpath '\\\\server.domain\\for_all\\Ð\x9dÐ\x90 СÐ\x90Ð\x99Т\\file1.xlsx' >>> >>>
>>> fpath = r'\\server.domain\for_all\НА САЙТ\file1.xlsx'.encode('cp1251') >>> fpath b'\\\\server.domain\\for_all\\\xcd\xc0 \xd1\xc0\xc9\xd2\\file1.xlsx' >>> >>> fpath = r'\\server.domain\for_all\НА САЙТ\file1.xlsx'.encode('cp1251').decode('latin1') >>> fpath '\\\\server.domain\\for_all\\ÍÀ ÑÀÉÒ\\file1.xlsx' >>>
Отредактировано py.user.next (Сен. 16, 2020 23:27:27)
Офлайн
0
py.user.next,
py.user.nextА я так и сделал изначально - без кириллицы проблем никаких нет, но в итоге нужно побороть кириллицу.
избавься для начала от кириллицы, сделай всё на латинице. Когда будет работать программа, тогда и кириллицу добавишь
from ftplib import FTP file = '\\\\server.domain\\for_all\\НА САЙТ\\file1.xlsx'.encode('utf-8') ftp = FTP('ftp.ru') ftp.login() with open(file, 'rb') as fobj: ftp.storbinary('STOR ' + file, fobj, 1024) # TypeError: can only concatenate str (not "bytes") to str
file = '\\\\server.domain\\for_all\\НА САЙТ\\file1.xlsx'.encode('utf-8').decode('latin1') with open(file, 'rb') as fobj: ftp.storbinary('STOR ' + file, fobj, 1024) # FileNotFoundError: [Errno 2] No such file or directory: '\\\\server.domain\\for_all\\Ð\x9dÐ\x90 СÐ\x90Ð\x99Т\\file1.xlsx'
file = '\\\\server.domain\\for_all\\НА САЙТ\\file1.xlsx'.encode('utf-8').decode('cp1251') with open(file, 'rb') as fobj: ftp.storbinary('STOR ' + file, fobj, 1024) # FileNotFoundError: [Errno 2] No such file or directory: '\\\\server.domain\\for_all\\РќРђ САЙТ\\file1.xlsx'
file = '\\\\server.domain\\for_all\\НА САЙТ\\file1.xlsx'.encode('cp1251').decode('latin1') with open(file, 'rb') as fobj: ftp.storbinary('STOR ' + file, fobj, 1024) # FileNotFoundError: [Errno 2] No such file or directory: '\\\\server.domain\\for_all\\ÍÀ ÑÀÉÒ\\file1.xlsx'
ftp.storbinary
ftp.encoding = 'utf-8'
Отредактировано The_Immortal (Сен. 17, 2020 02:31:20)
Офлайн