Форум сайта python.su
Доброго всем времени!
Я несколько месяцев осваиваю python. Использую интерпретатор python 3.3 cо средой разработки PyCharm.
Вопрос простой, но решительно поставил меня в тупик.
Есть файл с именем setting.ini, он лежит в папке С:\Моя программа на питоне\. Папка с проектом С:\Моя программа на питоне\start.py
Итак в файле программы start.py я хочу проверить существует ли файл setting.ini в папке С:\Моя программа на питоне\.
Делаю так:
# -*- coding: utf-8 -*-
ROOT_PATH = os.getcwd() # путь до каталога исполняемого скрипта
file_setting_path = (ROOT_PATH + “\\Setting.ini”) # абсолютный путь до файла настроек
if os.path.exists(file_setting_path) in not True: # на это строке ошибка! *
print(“файла нет”)
else:
print(“файл есть”)
Но при запуске скрипта получаю такую ошибку:
UnicodeEncodeError: ‘latin-1’ codec can't encode characters in position 10-22: ordinal not in range(256) на строке *
Также не открываются файлы, в пути которых содержаться русские буквы.
Как можно победить такое неудобство?
Имена файлов писать только латиницей не подходит, т.к. программу пишу для пользователей, которые могут скопировать файлы программы в любой путь на ПК под управлением Windows.
Спасибо!
Офлайн
if os.path.exists(file_setting_path) in not True
print(os.path.exists(file_setting_path))
Отредактировано 4kpt_II (Ноя. 30, 2013 17:05:01)
Офлайн
# -*- coding: utf-8 -*- ROOT_PATH = os.getcwd() # путь до каталога исполняемого скрипта #-НЕТ это путь к текущей директории - абсолютно разные вещи file_setting_path = (ROOT_PATH + “\\Setting.ini”) # абсолютный путь до файла настроек # используйте os.path.abspath вместо двух предыдущих строк проще и более переносимо. if os.path.exists(file_setting_path) in not True: # на это строке ошибка! * print(“файла нет”) else: print(“файл есть”) # достаточно print( “файл есть” if os.path.exists(file_setting_path) else “файла нет”)
# -*- coding: utf-8 -*-
Отредактировано doza_and (Ноя. 30, 2013 17:13:16)
Офлайн
Вы правы, все работает!
Я пишу программу используя библиотеку Qt и если убрать строку:
app = QtGui.QApplication(sys.argv) которая предшествует коду приведенному выше, то все работает!
Видимо QtGui.QApplication(sys.argv) как то переопределяет кодировку файловых путей.
Скажите пожалуйста о каких тегах вы говорите, которыми необходимо оборачивать код?
Офлайн
doza_and
# -*- coding: utf-8 -*- ROOT_PATH = os.getcwd() # путь до каталога исполняемого скрипта #-НЕТ это путь к текущей директории - абсолютно разные вещи file_setting_path = (ROOT_PATH + “\\Setting.ini”) # абсолютный путь до файла настроек # используйте os.path.abspath вместо двух предыдущих строк проще и более переносимо.
Офлайн
WorldInPython
Мануал в картинках
Офлайн
SingularityПонял, спасибо!
WorldInPythonМануал в картинках
Офлайн