簡體   English   中英

Python-將多個列表寫入文件

[英]Python - Write multiple lists to file

我正在編寫股票行情自動收錄器程序,它將結果顯示在屏幕上,並將其寫入文件。 我將結果顯示到屏幕上沒有問題,但是文件中的結果不是我期望的。

將結果顯示在屏幕上的代碼:

tickerList = ticker.split() 
quotes = get_stock_quote(tickerList)
for quote in quotes:
    print 'ticker: %s' % quote['t'], 'current price: %s' %    quote['l_cur'], 'last trade: %s' % quote['lt'] 

結果(符合我的預期):

ticker: AAPL current price: 111.31 last trade: Oct 6, 4:00PM EDT
ticker: GOOG current price: 645.44 last trade: Oct 6, 4:00PM EDT
ticker: IBM current price: 148.80 last trade: Oct 6, 6:20PM EDT

寫入文件的代碼:

for quote in quotes:
    out_quotes = ['ticker: %s ' % quote['t'], 'current price: %s ' % quote['l_cur'], 'last trade: %s ' % quote['lt']]

outfile = open('result.txt', 'w')
for quote in out_quotes:
    outfile.writelines(chain(*out_quotes))
    outfile.write('\n')

結果:

ticker: IBM current price: 148.80 last trade: Oct 6, 6:20PM EDT 
ticker: IBM current price: 148.80 last trade: Oct 6, 6:20PM EDT 
ticker: IBM current price: 148.80 last trade: Oct 6, 6:20PM EDT 

我期望的結果與屏幕上顯示的結果相同。 任何人都可以幫助指出我的錯誤嗎? 提前致謝。

這是因為out_quotes變量被第一個循環的每次迭代覆蓋。

您應該在第一個循環之前打開文件,然后直接在第一個循環內寫入文件(並且沒有第二個循環)。

正在修改的同一 out_quotes變量對每個quotequotes

最簡單的方法是在相同的for循環中同時進行printwrite ,如下所示:

for quote in quotes:
    print 'ticker: %s' % quote['t'], 'current price: %s' %    quote['l_cur'], 'last trade: %s' % quote['lt']
    outfile.write(''.join(['ticker: %s ' % quote['t'], 'current price: %s ' % quote['l_cur'], 'last trade: %s ' % quote['lt']]) + '\n')

另外,為簡化write行,您可以將其更改為:

outfile.write('ticker: %s current price: %s last trade: %s\n' % (quote['t'], quote['l_cur'], quote['lt']))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM