【发布时间】:2017-11-02 10:45:41
【问题描述】:
我有以下代码:
def get_asset_info(asset_list):
import datetime
today = datetime.datetime.today()
day = today.strftime("%d")
for i in range( len( asset_list )):
raw_info = get_OHLC( asset_list[i], 15, get_server_time() )
info = raw_info['result'][asset_list[i]]
head = "time,open,high,low,close,vwap,volume,count"
formatted_info = ""
for i in range(len(info[0])):
formatted_info = formatted_info + info[0][i] + ","
file = open(asset_list[i]+"_"+day, "a")
file.write(head + "\n")
file.write(formatted_info)
file.close()
它应该获取一些值,将其转换为字符串并将其写入文件,动态生成。 它不是这样工作的,所有值都放在同一个文件中。
如果我像下面这样更改代码的最后一部分,则会生成文件:
formatted_info = str(info[0][0]) + "," + str(info[0][1]) + "," + str(info[0][2]) + "," + str(info[0][3]) + "," + str(info[0][4]) + "," + str(info[0][5]) + "," + str(info[0][6]) + "," + str(info[0][7])
file = open(asset_list[i]+"_"+day, "a")
file.write(head + "\n")
file.write(formatted_info)
file.close()
因此,正如我所见,问题出在我为生成字符串而创建的 for 循环中,但没有任何意义,因为生成文件的代码不在同一个循环中。
有什么想法吗?
【问题讨论】:
-
缩进你的文件写入块,否则它只会写出
formatted_info的最后一个实例 -
您对内循环和外循环使用相同的变量
i。使用不同的变量。 -
完全摆脱内部循环是可能的,只需使用这个:
formatted_info = ",".join(info[0]) + ","
标签: python python-3.x file for-loop