[英]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
變量對每個quote
的quotes
。
最簡單的方法是在相同的for循環中同時進行print
和write
,如下所示:
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.