python-fitparse
:warning: 注意: 我这些天几乎没有时间来维护这个包!
我正在寻找一位维护者来帮助处理问题并更新/发布这个包。 如果你有兴趣提供帮助,请通过电子邮件 david@dtcooper.com 联系我。
如果你因为某些原因在使用这个包时遇到困难,我们建议你使用 一个替代库:polyvertex 开发的 fitdecode。
祝好,
David
这是一个用于解析 ANT/Garmin .FIT
文件的 Python 库。
pip install fitparse
FIT 文件
- FIT 文件包含以二进制文件格式存储的数据。
- FIT(灵活和可互操作数据传输)文件协议由 ANT 指定。
- SDK、代码示例和详细文档可以在 ANT FIT SDK 中找到。
用法
一个打印 fit 文件记录的简单示例:
import fitparse
# 加载 FIT 文件
fitfile = fitparse.FitFile("my_activity.fit")
# 遍历所有类型为 "record" 的消息
# (其他类型包括 "device_info"、"file_creator"、"event" 等)
for record in fitfile.get_messages("record"):
# 记录可以包含多个数据项(例如:时间戳、纬度、经度等)
for data in record:
# 打印数据的名称和值(如果有单位,也打印单位)
if data.units:
print(" * {}: {} ({})".format(data.name, data.value, data.units))
else:
print(" * {}: {}".format(data.name, data.value))
print("---")
该库还提供了一个名为 fitdump
的命令行工具:
$ fitdump --help
用法: fitdump [-h] [-v] [-o OUTPUT] [-t {readable,json}] [-n NAME] [--ignore-crc] FITFILE
将 .FIT 文件转储为各种格式
位置参数:
FITFILE 输入的 .FIT 文件(使用 - 表示标准输入)
可选参数:
-h, --help 显示此帮助信息并退出
-v, --verbose
-o OUTPUT, --output OUTPUT
输出数据的文件(默认为标准输出)
-t {readable,json}, --type {readable,json}
输出的文件类型。(默认:readable)
-n NAME, --name NAME 要筛选的消息名称(或编号)
--ignore-crc 某些设备可能会写入无效的 CRC,忽略这些。
更多信息请查看文档:http://dtcooper.github.io/python-fitparse
与原始版本的主要变化
经过几年的沉寂,我们重新开始积极开发!
旧版本已归档为 v1-archive
。
-
新的、希望更清晰的公共 API,明确区分了可访问和内部部分。(仍不稳定且部分完成。)
-
适当的文档!可在此处获取。
-
单元测试和示例程序。
-
(进行中) 命令行工具(例如
.FIT
到.CSV
的转换器)。 -
现在支持组件字段和压缩时间戳头,不再仅仅是事后考虑。解决了问题 #6 和 #7。
-
FIT 文件解析足够通用,可以支持所有类型。将为更流行的文件类型(如活动)提供特定的
FitFile
子类。 -
(进行中) 以一致且易于通过子类化转换器类来自定义的方式将字段类型转换为标准化值(例如,
bool
、date_time
等)。我将在这个类上使用类似 Django 表单风格的convert_<field name>
习惯。 -
FIT 配置文件现在是一个完整的独立 Python 模块,而不是使用
profile.def
。- 额外收获!配置文件生成脚本 不那么 丑陋(但仍然是一个令人发指的东西),并支持从版本 1.00 到 5.10 的每个 ANT FIT SDK。
-
一个可用的
setup.py
模块。终于解决了问题 #2!完成后我会将包上传到 PyPI。 -
支持一次解析一条记录。现在可以使用
<FitFile>.parse_one()
来实现,但我还不确定具体的实现方式。
更新到新的 FIT SDK 版本
- 下载最新的 ANT FIT SDK。
- 更新配置文件:
python3 scripts/generate_profile.py /path/to/fit_sdk.zip fitparse/profile.py
许可证
该项目采用 MIT 许可证 - 详情请参见 LICENSE
文件。