面向对像用akshare获取所有沪深A股历史数据,并可以断点下载和更新数据
时间: 2024-05-04 19:22:22 浏览: 228
mxnet训练自己的数据集分类,支持模型断点训练和预测单张图片.zip
可以使用akshare库中的`stock_zh_a_daily`函数获取所有沪深A股的历史数据。同时,可以使用Python中的`os`和`shutil`模块实现断点下载和更新数据。
以下是一个示例代码:
```python
import os
import shutil
import akshare as ak
# 设置存储路径和文件名
data_dir = './data'
data_file = 'stock_data.csv'
# 如果存储路径不存在,则创建
if not os.path.exists(data_dir):
os.makedirs(data_dir)
# 如果数据文件不存在,则直接下载
if not os.path.exists(os.path.join(data_dir, data_file)):
stock_data = ak.stock_zh_a_daily(symbol="sh000001", adjust="qfq")
stock_data.to_csv(os.path.join(data_dir, data_file), index=False)
else:
# 如果数据文件存在,则读取文件中最后一天的日期,并从该日期开始更新数据
stock_data = pd.read_csv(os.path.join(data_dir, data_file))
last_date = stock_data.iloc[-1]['交易日期']
stock_data = ak.stock_zh_a_daily(symbol="sh000001", start_date=last_date, adjust="qfq")
# 将新数据追加到文件末尾
stock_data.to_csv(os.path.join(data_dir, data_file), index=False, mode='a', header=False)
# 如果下载过程中出现中断,则可以通过复制临时文件来恢复下载
temp_file = os.path.join(data_dir, f'.{data_file}.tmp')
if os.path.exists(temp_file):
shutil.copy(temp_file, os.path.join(data_dir, data_file))
```
在该示例代码中,首先设置了数据存储路径和文件名,然后判断数据文件是否存在。如果不存在,则直接下载所有数据并保存到文件中。如果文件已经存在,则读取文件中最后一天的日期,并从该日期开始更新数据。更新数据的方式是追加新数据到文件末尾。
同时,为了支持断点下载,可以将正在下载的数据保存到一个临时文件中。如果下载过程中出现中断,则可以通过复制临时文件来恢复下载。
阅读全文