1 回答
TA贡献1757条经验 获得超8个赞
您处理两个不同的文件句柄 - 您内部的文件句柄watchlist_report较早关闭,因此在外部函数文件句柄关闭、刷新和写入之前先写入。
不要在你的函数中创建一个新的,而是open(..)传递当前文件句柄:
def watchlist_report(watchlist):
with open(watchlist, 'r') as companies, open('Watchlist Info.txt', 'a') as output:
searches = companies.read()
x = searches.split('\n')
for i in x:
output.write(i + ':\n')
stock_price(i, doc = output) # pass the file handle
output.write('\n')
在里面def stock_price(company, doc=None):使用提供的文件句柄:
def stock_price(company, output = None): # changed name here
# [snip] - removed unrelated code for this answer for brevity sake
if output is None: # check for None using IS
print( ... ) # print whatever you like here
else:
from datetime import date
output.write( .... ) # write whatever you want it to write
# output.close() # do not close, the outer function does this
不要关闭内部函数中的文件句柄,with(..)外部函数的上下文处理会为您完成。
文件处理的主要内容write(..)是不必立即将您放入文件的内容放置在那里。文件处理程序选择何时将数据实际保存到您的磁盘,它所做的最新操作是当它超出(上下文处理程序的)范围或当其内部缓冲区达到某个阈值时,因此它“认为”现在谨慎地更改为光盘上的数据。请参阅python 多久刷新一次文件?了解更多信息。
添加回答
举报