python - 将包数据设置为 PyPI python 包中命令行参数的默认输入
问题描述
我编写了一个命令行脚本,它需要一个包含在我的 python 包中的 csv 文件(下面的包布局)。我在命令行脚本上使用 argparse,并试图将默认的 csv 文件设置为软件包随附的文件。如何在我的命令行命令中将包中包含的 csv 文件指定为默认 csv 文件?
命令行 Argparse 参数:
parser = ArgumentParser()
parser.add_argument("-d", "--database", help="Database", **default="../data/database.csv"**) ## Help Here
args = parser.parse_args()
包层次结构:
package
- bin/
- My_Commandline_Command
- data/
- database.csv
- build/ ...
- dist/ ...
- MANIFEST.in
- README.md
- setup.py
- package/
- __init__.py
错误:
当我在我的开发环境之外安装我的包时,我可以看到数据文件夹,但是,我的命令行脚本抛出一个错误,因为没有找到默认的数据库路径。
解决方案
正如@hpaulj 建议的那样,您可以将默认设置为None
然后专门检查这种情况:
import argparse
from pathlib import Path
parser = argparse.ArgumentParser()
parser.add_argument("-d", "--database", help="Database", default=None)
args = parser.parse_args()
if args.database is None:
args.database = (Path(__file__).parent / "../data/database.csv").resolve()
这里我们可以__file__
用来获取相对位置database.csv