Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 29, 2010 13:29:03

Tobur
От:
Зарегистрирован: 2010-01-22
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

запись в файл

Сообщение об ошибке следующее:

Traceback (most recent call last):
File "D:\mydoc\NetBeansProjects\NewPythonProject\write2.py", line 7, in <module>
U.write = (F+'\n') #Записываем первую строчку
AttributeError: 'file' object attribute 'write' is read-only
>>>
Весь код, пример из книги:

X, Y, Z = 1, 2, 3                   #числа
F = "Привет" #строка
D = {'a':1, 'b':'привет'} #словарь
L = [1,2,3] #список

U = open('datafile.txt', 'w') #создает файл для записи
U.write = (F+'\n') #Записываем первую строчку
U.write =('%s,%s,%s\n' %(X,Y,Z)) #Переобразуем числа в строки
U.write =(str(D)+'$'+str(L)+'\n') #Переобразует и добавляет между словарем и списком знак $
U.close()
Почему не разрешает писать в файл и выдает ошибку только для чтения? я же поставил атрибут ‘w’ все как написано в книге. Файл создается.



Отредактировано (Янв. 29, 2010 13:29:38)

Офлайн

#2 Янв. 29, 2010 13:38:53

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

запись в файл

>AttributeError: ‘file’ object attribute ‘write’ is read-only

в созданный файл нельзя писать. Добавьте ему в свойствах разрешение на запись.



Офлайн

#3 Янв. 29, 2010 13:44:16

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

запись в файл

Может лучше знак равенства убрать?
Конструкция U.write = (F+'\n') это не запись в файл, а присваивание U.write значения (F+'\n')
А U.write является ридонли атрибутом, о чем и сказано: ‘file’ object attribute ‘write’ is read-only



Офлайн

#4 Янв. 29, 2010 13:48:15

Tobur
От:
Зарегистрирован: 2010-01-22
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

запись в файл

т.е. ручками только? правой кнопкой по файлу - свойства - только чтение(убрать галочку)
в книге написано, что если ставить атрибут ‘w’ то создается файл и в него можно вести запись, если ставить атрибут ‘r’, то только чтение. Почему у меня создается файл только для чтения?
И вот только что посмотрел, у меня не стоит галочка в свойствах атрибуты только чтение. То есть в свойствах все Ок. Может в версии питона дело, хотя не должно книга по 2.6 и пайтон 2.6



Офлайн

#5 Янв. 29, 2010 13:49:45

expee
От:
Зарегистрирован: 2009-12-21
Сообщения: 197
Репутация: +  0  -
Профиль   Отправить e-mail  

запись в файл

Знак присваивания здесь не нужен.

U.write(F+'\n')                  #Записываем первую строчку
U.write('%s,%s,%s\n' %(X,Y,Z)) #Переобразуем числа в строки
U.write(str(D)+'$'+str(L)+'\n') #Переобразует и добавляет между словарем и списком знак $
U.close()



Офлайн

#6 Янв. 29, 2010 13:50:58

Tobur
От:
Зарегистрирован: 2010-01-22
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

запись в файл

Ed
Может лучше знак равенства убрать?
Конструкция U.write = (F+'\n') это не запись в файл, а присваивание U.write значения (F+'\n')
А U.write является ридонли атрибутом, о чем и сказано: ‘file’ object attribute ‘write’ is read-only
сейчас попробовал вместо ‘=’ поставить ‘==’, в файл ничего не записало, но и ошибок вроде не выдало, рестартнулось ток
>>> ================================ RESTART ================================



Офлайн

#7 Янв. 29, 2010 13:52:11

Tobur
От:
Зарегистрирован: 2010-01-22
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

запись в файл

expee
Знак присваивания здесь не нужен.
ура, оно, спасибки



Офлайн

#8 Янв. 29, 2010 13:58:24

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

запись в файл

А, черт, я тока на ошибку посмотрел :D



Офлайн

#9 Янв. 29, 2010 17:45:23

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

запись в файл

Tobur
Ed
Может лучше знак равенства убрать?
сейчас попробовал вместо ‘=’ поставить ‘==’
Разницу между убрать и поставить еще один осознаете?



Офлайн

#10 Янв. 29, 2010 18:06:13

Tobur
От:
Зарегистрирован: 2010-01-22
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

запись в файл

Ed
Разницу между убрать и поставить еще один осознаете?
извините ^_^ не доглядел, верней прочитал, думал свое и как итог 8-(



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version