Python 如何从列表(datetime.timedelta)中使用特定于循环的天数并提取到不同的csv文件
以下代码不正确,因为datetime.timedelta(day=”“)必须包含整数而不是字符串 从链接中获取参考 在这种情况下很难定义新的函数,有什么简单方便的方法可以解决吗 --已解决--添加:day=int(字符串格式的day) 现有代码仅导出带有filenameA@0 , filenameB@0, filenameC@0..... 但是,它不能导出到不同的csv文件,如下所示Python 如何从列表(datetime.timedelta)中使用特定于循环的天数并提取到不同的csv文件,python,for-loop,break,python-datetime,Python,For Loop,Break,Python Datetime,以下代码不正确,因为datetime.timedelta(day=”“)必须包含整数而不是字符串 从链接中获取参考 在这种情况下很难定义新的函数,有什么简单方便的方法可以解决吗 --已解决--添加:day=int(字符串格式的day) 现有代码仅导出带有filenameA@0 , filenameB@0, filenameC@0..... 但是,它不能导出到不同的csv文件,如下所示 data.to_csv("filename"+x+"@"+n+".csv") filenameA@0.csv
data.to_csv("filename"+x+"@"+n+".csv")
filenameA@0.csv
filenameA@178.csv
filenameA@356.csv
filenameA@534.csv
filenameB@0.csv
filenameB@178.csv
filenameB@356.csv
filenameB@534.csv
filenameC@0.csv
..........
感谢您提供furas Requirement,以下是解决方案
def get_data():
# Every stock can loop on every periods
stocks = ['A', 'B', 'C', 'D', 'E','F','G','H']
periods = [0,178,356,534,712]
for x in stocks:
for n in periods:
tws.reqHistoricalData(x)
for _ in range(10): # repeat it only 10 times
today = datetime.datetime.today()
delta = datetime.timedelta(days=n)
data = pd.DataFrame(reqHistoricalData(today-delta).strftime("%Y%m%d %H:%M:%S %Z"))
if not data.empty:
data.to_csv("filename{}@{}.csv".format(x, n))
break # exit `for _` loop so it doesn't read again for the same period
print("empty data for", x, str(n), '... reading again')
tws.reqHistoricalData(x) # read again for the same period
为什么不将use list与整数一起使用
[0178356534]
?或者使用int()。或者您甚至可以在循环之前计算所有datetime.datetime.today()-datetime.timedelta(days=n)
。谢谢furas。你的建议行得通。但是,我在导出到cvs文件时遇到了一个新问题,请在Stackoverflow中查找上面编辑的post.main规则-如果您有新问题,请创建新的post。您可以将列表[0178356534]
中的值分配给变量n
,而不是I
。因此,使用n
而不是i
-data.to_csv(“文件名”+x+“@”+n+“.csv”)
def get_data():
# Every stock can loop on every periods
stocks = ['A', 'B', 'C', 'D', 'E','F','G','H']
periods = [0,178,356,534,712]
for x in stocks:
for n in periods:
tws.reqHistoricalData(x)
for _ in range(10): # repeat it only 10 times
today = datetime.datetime.today()
delta = datetime.timedelta(days=n)
data = pd.DataFrame(reqHistoricalData(today-delta).strftime("%Y%m%d %H:%M:%S %Z"))
if not data.empty:
data.to_csv("filename{}@{}.csv".format(x, n))
break # exit `for _` loop so it doesn't read again for the same period
print("empty data for", x, str(n), '... reading again')
tws.reqHistoricalData(x) # read again for the same period