2015-11-23 3 views
-1

Я пытаюсь записать данные в файл .txt. Данные, которые записываются, представляют собой случайные целые числа из функции randrange в следующем коде.
Я продолжаю получать сообщение об ошибке, при котором объект не имеет атрибута при попытке записи в файл.
Пожалуйста, помогите.Объект не имеет атрибута и не записывается в .txt-файл

import random 

def main(): 
    file_size = open('numbers.txt','w') 

    file_size = random.randint(4, 7) 

    print("file_size = ", file_size) 

    for _ in range(file_size): 
     random_num = random.randrange(5,20,2) 
     if random_num % 2 ==1: 
      print(random_num) 

    file_size.write(str(random_num)) 

    file_size.close() 
    print('Data has been written.') 

main() 
+2

является вы отступали правильно? и вы закончите писать переменную 'file_size', которая является основной причиной проблемы. – The6thSense

+0

Если вы посмотрите на свою ошибку, ясно, что ваш отступ не является ошибкой. Ваша проблема в том, что вы переписываете 'file_size', чтобы избежать этой проблемы, прекратите ее перезаписывать. Вы можете использовать диспетчер контекста для открытия файлового объекта – The6thSense

ответ

0

У вас есть большая ошибка, потому что file_size это первый поток затем внутр.
Вы должны использовать 2 различные переменные для file и file_size

Кроме того, я думаю, что вы хотите, чтобы писать каждый номер из цикла в файл поэтому он должен идти в ваш если-блок:

import random 

def main(): 
    file = open('numbers.txt', 'w') #rename to file 

    file_size = random.randint(4, 7) 

    print("file_size = ", file_size) 

    for _ in range(file_size): 
     random_num = random.randrange(5, 20, 2) 
     if random_num % 2 == 1: 
      print(random_num) 
      #use file not file_size 
      file.write(str(random_num)+'\n') #write every odd number to stream? 

    #use file not file_size  
    file.close() 
    print('Data has been written.') 


main() 
Смежные вопросы