Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从列表(datetime.timedelta)中使用特定于循环的天数并提取到不同的csv文件_Python_For Loop_Break_Python Datetime - Fatal编程技术网

Python 如何从列表(datetime.timedelta)中使用特定于循环的天数并提取到不同的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

以下代码不正确,因为datetime.timedelta(day=”“)必须包含整数而不是字符串

从链接中获取参考

在这种情况下很难定义新的函数,有什么简单方便的方法可以解决吗

--已解决--添加:day=int(字符串格式的day)

现有代码仅导出带有filenameA@0 , filenameB@0, filenameC@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