Форум программистов, компьютерный форум CyberForum.ru

Python: Сети

Войти
Регистрация
Восстановить пароль
 
Semen-Semenich
120 / 120 / 52
Регистрация: 21.03.2016
Сообщений: 415
#1

FTP создать папку с именем на кириллице - Python

31.08.2016, 22:46. Просмотров 533. Ответов 2
Метки нет (Все метки)

Всем доброго времени суток. есть скрипт для работы с фтп. скрипт считывает имя пользователя пк и создает папку с именем пользователя проблема заключается в том что если имя пользователя на кириллице то выводит ошибку при создании папки на сервере. указание кодировки в начале файла результатов не дало (может не так указывал,явно что то с кодировкой) питон 3.5. FTPсервер на винде 7. с другой прогой создает папку на кир. спокойно
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import ftplib
import urllib.request
import datetime
import os,sys
 
def ip_read ():
    ip = urllib.request.urlopen('https://getfile.dokpub.com/yandex/get/https://yadi.sk/i/AHYsR2gIs87j9')
    return ip.read().decode('utf-8')
 
def date_name(x):
    if x == 'd':
        return datetime.datetime.now().strftime("%d.%m.%Y ") 
    elif x == 't':
        return datetime.datetime.now().strftime("%H.%M.%S")
    else:
        return os.environ.get( "USERNAME" )
        
host = ip_read ()
ftp_user = 'user'
password = 'user'
time = '10'
con = ftplib.FTP(host, ftp_user, password,time)
con.mkd(date_name('n'))
лог ошибки
Python
1
2
3
4
5
6
7
8
9
10
11
12
Traceback (most recent call last):
  File "C:\Users\Дом\Desktop\PYTHON\сокет\skrin_ftp.py", line 23, in <module>
    con.mkd(date_name('n'))
  File "C:\Users\Дом\AppData\Local\Programs\Python\Python35-32\lib\ftplib.py", line 642, in mkd
    resp = self.voidcmd('MKD ' + dirname)
  File "C:\Users\Дом\AppData\Local\Programs\Python\Python35-32\lib\ftplib.py", line 276, in voidcmd
    self.putcmd(cmd)
  File "C:\Users\Дом\AppData\Local\Programs\Python\Python35-32\lib\ftplib.py", line 198, in putcmd
    self.putline(line)
  File "C:\Users\Дом\AppData\Local\Programs\Python\Python35-32\lib\ftplib.py", line 193, in putline
    self.sock.sendall(line.encode(self.encoding))
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 4-6: ordinal not in range(256)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2016, 22:46     FTP создать папку с именем на кириллице
Посмотрите здесь:

Visual Basic .NET Создать папку с именем системной даты
Создать папку с именем в опции BAT
C++ Создать папку на FTP
Создать на заданном диске папку с именем пользователя BAT
Невозможно создать папку с именем con, почему? Windows XP
QNetworkAccessManager создать папку на ftp сервере C++ Qt
Создать папку с заданным именем во всех папках выбранного каталога
загрузка файла из FTP (ftplib) Python
Создать папку с именем, которое необходимо взять из текстового файла Visual Basic .NET
Python Загрузить все файлы из папки по ftp(ftplib)
Как создать папку и файл на ftp хостинге? Visual Basic .NET
BAT Создать для каждого файла папку его имени и перенести в свою папку под именем index.html

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pyuser
199 / 184 / 21
Регистрация: 26.05.2011
Сообщений: 330
02.09.2016, 02:38     FTP создать папку с именем на кириллице #2
Попробуйте так:
Python
1
2
con = ftplib.FTP(host, ftp_user, password,time)
con.__class__.encoding = "utf-8"
Semen-Semenich
120 / 120 / 52
Регистрация: 21.03.2016
Сообщений: 415
02.09.2016, 14:11  [ТС]     FTP создать папку с именем на кириллице #3
спасибо помогло только con.__class__.encoding = "cp1251"
я так понял что это кодировка в которой работает фтп сервер и поэтому его надо указывать явно в объекте con а не в кодировке скрипта.
Yandex
Объявления
02.09.2016, 14:11     FTP создать папку с именем на кириллице
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru