2016-01-12 4 views
0

В настоящее время я пытаюсь создать простой список случайных чисел с плавающей запятой, сохранить его в текстовом файле и затем загрузить список плавающих чисел с помощью numpy с помощью numpy.loadtxt.Загрузка плавающих чисел из txt-файла с помощью python3 numpy

По какой-то причине при использовании loadtxt в нем указано, что файл пуст.

/usr/local/lib/python3.4/dist-packages/numpy/lib/npyio.py:891: UserWarning: loadtxt: Empty input file: "mydata1.txt" 
warnings.warn('loadtxt: Empty input file: "%s"' % fname) 

[ ] 

class 'numpy.ndarray' 

Вот пример кода:

import numpy 
import scipy 
import matplotlib 
from random import random 
import codecs 

floats = list(random() for i in range (10)) 
fp = open('mydata1.txt','w') 
for item in floats: 
    str_item="{0:.5f}".format(item) 
    fp.write("%s\n" % str_item) 
fp.close 

floats2 = numpy.loadtxt("mydata1.txt",dtype="str", delimiter="\n") 
for myfloat in floats2: 
    print("my floats is:",myfloat) 
print(floats2) 
print(type(floats2)) 
+1

'fp.close' - это не то же самое, что' fp.close() '... Кроме того, почему бы вам просто не создать массив и не использовать [' savetxt'] (http: //docs.scipy. орг/DOC/NumPy-1.10.0/ссылка/полученные/numpy.savetxt.html # numpy.savetxt)? – jonrsharpe

+0

Hi @Mike Müller. Это больше похоже на excersize для измерения возможностей numpy и того, как он взаимодействует с txt-файлами. Я ранее тестировал массивы и файловую функцию, которая отличная –

ответ

0

Изменение:

fp = open('mydata1.txt','w') 
for item in floats: 
    str_item="{0:.5f}".format(item) 
    fp.write("%s\n" % str_item) 
fp.close 

в:

with open('mydata1.txt','w') as fp: 
    for item in floats: 
     fp.write("{0:.5f}\n".format(item)) 

и он должен работать.

with open() открывает файл и закрывает его, как только вы выделяете свой код. Ваш fp.close не закрывает файл, потому что у вас отсутствуют скобки. Это должно быть: fp.close(). По умолчанию файлы открываются в буферизованном режиме. Итак, если вы не закрываете или не закрываете файл, все или все данные записываются в ваш файл.

+0

Большое спасибо за вашу помощь –