file.write with Python接收错误消息connectionClosed

时间:2014-10-31 11:45:14

标签: python

我正在尝试修改Python脚本。该脚本获取股票价格并在Python控制台中打印出来。我正在尝试更改此值以将价格写入文本文件。这是原始代码:

类BerryWrapper(EWrapper):

def __init__(self):

    pass

def tickPrice(self, tickerId, field, price, canAutoExecute):

    if (field == 4):

        print 'Last[%s,%s,%s]' % (tickerId, price, canAutoExecute)

    elif (field == 1):

        print 'Bid[%s,%s,%s]' % (tickerId, price, canAutoExecute)

    elif (field == 2):

        print 'Ask[%s,%s,%s]' % (tickerId, price, canAutoExecute)

这似乎工作正常。我将这些更改修改为:

类BerryWrapper(EWrapper):

def __init__(self):

    pass

with open('log_me.txt','w') as file:

    def tickPrice(self, tickerId, field, price, canAutoExecute):

        if (field == 4):

            print 'Last[%s,%s,%s]' % (tickerId, price, canAutoExecute)

            file.write('Last[%s,%s,%s]' % (tickerId, price, canAutoExecute))

        elif (field == 1):

            print 'Bid[%s,%s,%s]' % (tickerId, price, canAutoExecute)

            file.write('Last[%s,%s,%s]' % (tickerId, price, canAutoExecute))

        elif (field == 2):

            print 'Ask[%s,%s,%s]' % (tickerId, price, canAutoExecute)

            file.write('Last[%s,%s,%s]' % (tickerId, price, canAutoExecute))

当我跑步时,我收到以下消息:

id:关闭文件的I / O操作

connectionClosed

我不确定的是时机。我想打开文件一次然后让它保持打开状态,而所有这些价格都来了并且写完了。你知道我需要做什么吗?

1 个答案:

答案 0 :(得分:1)

更改

的顺序
with open('log_me.txt','w') as file:

    def tickPrice(self, tickerId, field, price, canAutoExecute):

as

def tickPrice(self, tickerId, field, price, canAutoExecute):
    with open('log_me.txt','w') as file:

但您应该关心w中的open标记会在tickPrice的每次调用中重写您的文件。您可以使用将append data提交的标记a来省略此行为。