Форум сайта python.su
Добрый день. Столкнулся с проблемой, в пути указаны русскоязычные папки, причем изменить их нельзя. 2 дня уже ищу инфу по этой проблеме, мб вы подскажете?
От этого:
# -*- coding: cp1251 -*-
# -*- coding: utf-8 -*-
Офлайн
да, подскажем, что проблему нужно описывать достаточно полно…а вы нам лишь намекнули. Либо рассказывайте подробно, либо ждите телепатов, они ксати есть…были случаи…
Офлайн
В общем и целом:
Я вызываю текущую папку(где лежит скрипт), и хочу проверить какие файлы есть в этой папке.
dir = os.path.abspath(os.curdir) # -- C:\Documents and Settings\Admin\Рабочий стол files = glob.glob(dir) # -- ['C:\\Documents and Settings\\Admin\\\xd0\xe0\xe1\xee\xf7\xe8\xe9 \xf1\xf2\xee\xeb']
Офлайн
Про телепатов поддерживаю, тоже видел.
Винды нет в наличии проверить, а вот так не сработает?
files = glob.glob(os.path.join(dir, u'*'))
Офлайн
nnmware
Про телепатов поддерживаю, тоже видел.
Винды нет в наличии проверить, а вот так не сработает?
files = glob.glob(os.path.join(dir, u'*'))
Traceback (most recent call last): File "C:/Documents and Settings/Admin/Рабочий стол/copyFiles.py", line 8, in <module> files = glob.glob(os.path.join(dir, u'*')) File "C:\Python27\lib\ntpath.py", line 108, in join path += "\\" + b UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 32: ordinal not in range(128) >>>
Офлайн
152RUSlGefУзнать, наконец, что такое юникод.
Проблема в кодировке во второй строчке. Мне бы хотелось узнать, как это можно решить?
Офлайн
погодите.
Вы говорите надо проверить файлы которые лежат в данной папке.
Зачем тогда вообще все это.
Вот так что, не работает?
dir = os.path.abspath(os.curdir) for files in os.listdir(dir): print files
Офлайн
:)
152RUSlGefА у меня переименовать директорию быстрее получается. И после этого забывается не только ваша проблема, но и такое множество других, что многие даже и не подозревают сколько их (проблемы бывают не только с питоном).
русскоязычные папки, причем изменить их нельзя. 2 дня уже ищу инфу
>>> import win32api >>> win32api.GetShortPathName(u"C:\\Program Files") 'C:\\PROGRA~1'
dir /X /-C 02.03.2013 16:12 1 a.py 02.03.2013 22:35 38 aaa.py 23.09.2011 20:47 215040 BOOST_~1.DLL boost_python-vc100-mt-1_47.dll 18.07.2012 20:40 243712 dudley.dll 18.07.2012 20:38 653312 escript.dll 18.07.2012 20:42 842240 finley.dll 23.09.2011 11:24 120320 netcdf.dll 23.09.2011 11:25 76288 NETCDF~1.DLL netcdf_cpp.dll 18.07.2012 20:39 292864 pasowrap.dll 18.07.2012 20:42 148992 weipa.dll 02.03.2013 22:42 1 1C1CC~1.TXT археолог геолог.txt
Отредактировано doza_and (Март 2, 2013 20:56:16)
Офлайн
Спасибо ребят, на самом деле делаю чисто для себя, практикуюсь в разных вопросах, что себе придумал то и делаю. И тут сама задумка, скрипт для раскидывания кучи мусора с раб стола, вот и наткнулся на эту проблему, и “Рабочий стол” не переименуешь особо((( Гребанная Винда… Терпеть её не могу… А Нет бук чет убунту не тянет.
Офлайн
152RUSlGef
не тянет наверное не убунту конкретно, а графический стол. Попробуйте XFСE или лучше LXDE. У меня рабочий ноут в 08 купленный и то был середнячком, стоит openSUSE 12 года и работает шустро, потому что LXDE,а не KDE.
по делу: вам нужно понять что такое в Python2 строки и что такое unicode объекты, и почему unicode объекты выгоднее в данном аспекте. Уже столько раз обсуждалось что видимо истину трудно найти в просторах всемирой помой.. паутине. В общем суть такая: позаботьтесь что любая строка попадающая в вашу python программу была конвертирована в unicode с оответствующей этой строке кодировкой. Внутри python программы все делается использую unicode. Если нужно вывести unicode объект,то конвертируете его в строку с необходимой кодировкой.все.
Офлайн