печать перенаправлена в файл ИНОГДА приводит к неполной распечатке в Python

1

Я хочу сохранить список в файл, поэтому я просматриваю его и записываю в файл. Все в порядке. Но SOMETIMES (!?!?) Список не написан полностью, он останавливает рендеринг в середине элемента. Ошибка не возникает, она молча продолжает выполнение остальной части кода. Я пробовал несколько способов написать его, несколько версий python (2.4, 2.5, 2.7) и все равно. Иногда это работает, иногда нет. Когда он распечатывается в окне терминала, а не в файле, он работает исправно без сбоев. Я что-то упускаю?

это оно

...    

from bpnn import *

...

# save input weights for later use:
writewtsi = open("c:/files/wtsi.txt", "w")
for i in range(net.ni):
    print>>writewtsi, net.wi[i]

bpnn - это модуль нейронной сети отсюда: http://python.ca/nas/python/bpnn.py

Теги:
file

3 ответа

2
Лучший ответ

Закройте файл, когда закончите все записи, чтобы обеспечить кэширование с записью на диск с помощью:

writewtsi.close()
  • 1
    Да это оно. оба flush () и close () работают хорошо. Большое спасибо.
0

использование

.flush()

вот так:

...     
from bpnn import *
...

# save input weights for later use:
writewtsi = open("c:/files/wtsi.txt", "w")
for i in range(net.ni):
    print>>writewtsi, net.wi[i]
    writewtsi.flush()

Или вы можете сделать файл небуферизованным с третьим параметром, чтобы открыть():

...     
from bpnn import *
...

# save input weights for later use:
writewtsi = open("c:/files/wtsi.txt", "w", 0)
for i in range(net.ni):
    print>>writewtsi, net.wi[i]
0

Сохраняется ли проблема, если вы используете:

with open("c:/files/wtsi.txt", "w") as writewtsi:
    for i in range(net.ni):
        print>>writewtsi, net.wi[i]            
  • 0
    Да это оно. оба flush () и close () работают хорошо. Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню