wade
Март 24, 2010 14:00:22
Добрый день
У меня такая проблема:
я пытаюсь в windows сохранить файл с русскоязычным именем. Я даю в качестве имени string в кодировке cp1251 , в ошибке пишет “недопустимое имя файла”, при этом в тексте ошибки имя файла выглядит так, как будто оно декодировано в unicode перед тем, как его поставить.
Кодировка скрипта - cp1251.
При этом, если я в шелле даю русское имя файла - все без проблем, т.е. питон сам его рекодит в cp1251 и сохраняет.
Задача мне видится так: дать питону string в нужном виде. Но в каком? В unicode давал - тоже ошибка…
Кто-нибудь сталкивался с чем-то подобным?
Как сохранить файл с русскоязычным именем?
Спасибо.
Nik
Март 24, 2010 14:07:26
>>> f = open("мойфайл.txt", "w")
>>> f.write("Строка записана в файл")
>>> f.close()
>>> f = open(unicode("мойфайл2.txt", "cp1251"), "w")
>>> f.write("Строка записана в файл")
>>> f.close()
Никаких проблем не возникло… Два файла были созданы с русскими именами…
# -*- coding: cp1251 -*-
f = open("мойфайл3.txt", "w")
f.write("Строка записана в файл")
f.close()
f = open(unicode("мойфайл4.txt", "cp1251"), "w")
f.write("Строка записана в файл")
f.close()
print "OK"
raw_input()
Также без проблем…
wade
Март 24, 2010 17:05:24
Спасибо Вам за помощь. Ваши примеры и у меня работают - возможно ошибка где-то еще.
Я попробовал и еще такой пример:
# -*- coding: cp1251 -*-
f = open("мойфайл3.txt", "w")
f.write("мойфайл_new.txt")
f.close()
fr = open('мойфайл3.txt','r').readlines()[0]
f = open(unicode(fr, "cp1251"), "w")
f.write("Строка записана в файл")
f.close()
print "OK"
raw_input()
Тоже все работает.
ZZZ
Март 26, 2010 18:22:00
wade
Кодировка скрипта - cp1251.
1. Перекодировать скрипт в UTF-8.
2. Использовать unicode для имён файлов.