我在打开和调整 pickle 文件的 for() 函数中不断收到 "Ran out of input" 错误

I keep getting "Ran out of input" error in for() function to open and adjust pickle file

我在python制作股票数据MACD计算器。我的方法是用'for()'访问某个目录下的pickle数据,逐一计算MACD值。但是,我每次都得到 'Ran out of input error'。我检查了存储 pickle 数据的目录,它不是空的。有趣的是,如果我只是将数字放在 i 位置而不使用 'for()',我可以获得 pickle 文件的数据。请帮我摆脱这个错误。

这是我的代码:

'''

import pickle
import os
import pathlib
from pathlib import Path

file_list = os.listdir('/home/sejahui/projects/pickle_data') 
os.chdir('/home/sejahui/projects/pickle_data')

for i in range(2):
    odd = file_list[i]
    with open(odd,'rb') as stock:
        data = pickle.load(stock)
    print(data)

'''

在这种情况下,实际上,您使用 file_list = os.listdir('/home/sejahui/projects/pickle_data') 创建了一个列表。您不需要 range 进行迭代。

错误是因为有时只有1个文件所以它会在索引之外。正确的做法是这样的:

import pickle
import os
import pathlib
from pathlib import Path

file_list = os.listdir('/home/sejahui/projects/pickle_data') 
os.chdir('/home/sejahui/projects/pickle_data')

for str in file_list:
   
    with open(str,'rb') as stock:
        data = pickle.load(stock)
    print(data)

您甚至可以根据正则表达式或模式向过滤器添加 if 语句

if str == "something":
    with open(str,'rb') as stock:
        data = pickle.load(stock)