Подводные камни:
* имя исходного файла относительно текущего каталога
* имя исходного файла содержит кириллицу
* имя исходного файла содержит пробелы
структура ФС:
-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!
Т.е. выводится корректный текст, но файлы всё-равно не видит.