Найти - Пользователи
Полная версия: Копирование файлов
Начало » Python для новичков » Копирование файлов
1 2
Iskatel
Kon52
Доки нужно не только читать, но еще и понимать

Igorsk
как быть ?
Курить и курить и курить кодировки, что они, зачем они, откуда и куда они…

import shutil
shutil.copy(u'c:\\привет.txt', u'd:\\привет.txt')

Вот так работает
В двух словах - shutil хочет unicode, а вы ему utf-8

JOHN_16
кодировка файла соответствовала указанной

Вы явно решили запутать топикстартера и себя…
1. IDE сохранит и загрузит в той кодировке, что писали. В данном случае cp1251
2. Интерпретатор правильно переводит ее в utf-8, как и заявлено в заголовке.
3. Косяк топикстартера в том, что shutil хочет unicode, а не utf-8
4. Пересохранив файл в “нужно что бы файл кодировка файла соответствовала указанной” (слова и пунктуация автора цитаты сохранены)
Получим что интерпретатор думая, что читает системную cp1251, прочитает utf-8 и получит абракадабру…
JOHN_16
Iskatel
да ? Тогда почему, по вашему мнению следующий файл с кодом сгенерирует ошибку Uniocode ?
Iskatel
JOHN_16
да ? Тогда почему, по вашему мнению следующий файл с кодом сгенерирует ошибку Uniocode ?
Вы бы хоть ваш трейсбэк предоставили, у меня выводит:

u'\u041f\u0440\u0438\u0432\u0435\u0442'
Привет


ЗЫ. это тот файл?

# -*- coding: utf-8 -*-
s = u'Привет'
print(repr(s))
print(s)

а то прикрепляете какбудто вирус Что мешает в форум вставить?
JOHN_16
Iskatel
Что мешает в форум вставить?
В файле исходная кодировка. При постинге на форум исходная кодировка потеряется.
Вот трейсбек
C:\>test2.py
File “C:\test2.py”, line 3
s = u'╧ЁштхЄ'
SyntaxError: (unicode error) ‘utf8’ codec can't decode byte 0xcf in position 0:
invalid continuation byte
Iskatel
а то прикрепляете какбудто вирус
вы же видите что там *.py файл.

Поставлю вопрос по другому. Скачайте файл и запустите его. Объясните почему произошла ошибка.
Iskatel
JOHN_16
Объясните почему произошла ошибка.

Подозреваю из-за того что вы перемудрили, и “перевели файл в указанную кодировку”, о чем я и писал выше…

ЗЫ. героически преодолевать специально придуманные трудности это конечно “социалистический олдскул”
Но немогли бы вы описать подробности того проишествия, в результате которого данный файл получился?
JOHN_16
Iskatel
это не я придумал. Это одна из распространенных ошибок тех кто приступают к языку. Алгоритм очень прост - открывается текстовый редактор, который пишет код в кодировке по умолчанию. Для WindowsXP это будет cp1251, по не знанию вставляется в начала строчка с указанием кодировки вида #-*- coding:utf-8 -*- потому что именно такая встречается в интернете. Итог мы имеем файл с исходным кодом кодированным в cp1251, а интерпретатору указано UTF-8.

И сарказм здесь вообще не уместен, а на этот форуме давно, и к периодическим таким вот ошибкам от новичков привык. На StackOverflow также придостаточно подобных вопросов. Отсюда вывод, что проблема есть.

Вы не правы.
Iskatel
В данном случае cp1251
2. Интерпретатор правильно переводит ее в utf-8, как и заявлено в заголовке.
Вот тот самый PEP который объясняет как все устроено.

Iskatel
JOHN_16
Чукча не читатель
я пропустил “если запускаю файл через IDLE (Python GUI) все работает но если запускаю файлик с этим кодом просто ( так скажем с рабочего стола)”

Прошу пардона.
Igorsk
JOHN_16
Специально выкладываю в виде отдельного файла

Огромное спасибо!!!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB