crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Копирование файлов в Питоне
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

Код для теста наваял такой:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# тест

import sys
import shutil
import os


docs = ["\"folder_1/file раз.txt\"",
"\"folder_1/file два.txt\"",
"\"folder два/file два.txt\"",
"\"folder два/file 2.txt\""]

destDir = "doc"



def copyDocs():
    if os.path.isdir(destDir):
        print '\'' + destDir + '\'' + ' is Dir'
    for doc in docs:
        if os.path.exists(doc):
            print doc + ' is exists!'
        else:
            print doc + ' is NOT exists!'
        #file = os.path.basename(doc)
        #shutil.copy(doc, destDir)

if __name__ == '__main__':
    copyDocs()

К консоли винды получаю такое:
'doc' is Dir
"folder_1/file ╤А╨░╨╖" is NOT exists!
"folder_1/file ╨┤╨▓╨░" is NOT exists!
"folder ╨┤╨▓╨░/file ╨┤╨▓╨░╨н" is NOT exists!
"folder ╨┤╨▓╨░/file 2" is NOT exists!

В IDLE:
'doc' is Dir
"folder_1/file раз.txt" is NOT exists!
"folder_1/file РґРІР°.txt" is NOT exists!
"folder два/file дваЭ.txt" is NOT exists!
"folder РґРІР°/file 2.txt" is NOT exists!

А вот если не изменяя самого исходника, поменять кодировку файла на ANSI (т.е. и запись о кодировке UTF-8 оставить неизменной)
то вывод в IDLE будет:
'doc' is Dir
"folder_1/file раз.txt" is NOT exists!
"folder_1/file два.txt" is NOT exists!
"folder два/file два.txt" is NOT exists!
"folder два/file 2.txt" is NOT exists!

Т.е. выводится корректный текст, но файлы всё-равно не видит.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 19.5.2011, 7:07
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(igor_bogomolov @ 17.5.2011, 15:10) *
Так если у тебя файл в кодировке cp1251, почему интерпретатору ты говоришь иначе?
потому-что он изначально был в UTF-8

Цитата(igor_bogomolov @ 17.5.2011, 15:10) *
file_name = 'file один.txt'.decode('cp1251')
пример не понял. В какой кодировке исходник?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.12.2024, 14:20