Копирование файлов в Питоне |
Здравствуйте, гость ( Вход | Регистрация )
Копирование файлов в Питоне |
Litkevich Yuriy |
16.5.2011, 10:30
Сообщение
#1
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Задача, скопировать несколько файлов в некий каталог.
Подводные камни: * имя исходного файла относительно текущего каталога * имя исходного файла содержит кириллицу * имя исходного файла содержит пробелы структура ФС: -doc -folder_1/file раз.txt -folder_1/file два.txt -folder два/file раз.txt -folder два/file 2.txt нужно все файлы скопировать в каталог doc Код для теста наваял такой:
К консоли винды получаю такое:
В IDLE:
А вот если не изменяя самого исходника, поменять кодировку файла на ANSI (т.е. и запись о кодировке UTF-8 оставить неизменной) то вывод в IDLE будет:
Т.е. выводится корректный текст, но файлы всё-равно не видит. |
|
|
igor_bogomolov |
17.5.2011, 12:10
Сообщение
#2
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
* экранированные кавычки - ненужны. Ну это мы уже выяснили. Так ты же кавычки в имя файла запихал Было бы странно, если бы они были нужны. Мы же не в консоли команду вводим. Ты же не делаешь в Qt так: Такой код тоже файла не найдет, даже если он существует. Все по тем же причинам (кавычки в имени файла).* если кодировка исходника CP1251, то всё корректно работает с кириллицей, не взирая на то, что в начале файла есть запись о кодировке UTF-8. Так если у тебя файл в кодировке cp1251, почему интерпретатору ты говоришь иначе? Пиши такНо надо бы делать по правильному - заявленная кодировка должна соответствовать реальной.
Ну и что бы завершить тему. Представим ситуацию. Файл у нас в кодировке cp1251. Система/консоль в UTF8. Этот код не найдет существующий файл. К тому же на консоль выведет кракозябры. Что бы всё работало так как задумано , нужно писать так
Но это надуманный пример. В реальной ситуации такого быть не должно. |
|
|
Текстовая версия | Сейчас: 22.12.2024, 14:50 |