- import sys
- import os
-
- # 路径操作对象
- print(os.path)
- # 返回当前脚本的路径
- print(sys.executable)
- # 返回当前脚本的绝对路径
- print(os.path.realpath(sys.executable))
- # 去掉文件名,返回当前脚本的目录(也可以理解从里到外,去掉一层)
- print(os.path.dirname(os.path.realpath(sys.executable)))
- # 也可以嵌套多去掉几层,直到想要的文件夹即可
- print(os.path.dirname(os.path.dirname(os.path.realpath(sys.executable))))
-
- # 举例
- # path = os.path.dirname(os.path.dirname(os.path.realpath(sys.executable)))
- # filePath = path + '/' + 'config.json'
- # 注意 mac、win 路径中的斜杠问题,可以使用转义符 '\\' '\/'
-
- # mac 可执行文件也一样传,win 暂时没测试过,后续补上
- $ main 1 2 3
-
- # 但是打包的 mac 软件 不可以这么传,要么 gui 导入,要么内部写死一个路径读取(例如:网页)
-
- import sys
- import json
-
- # 解析参数
- in_filepath = sys.argv[1] # 参数 1
- # out_style = sys.argv[2] # 参数 2
- # out_filepath = sys.argv[3] # 参数 3
-
-
- print("--input_filepath:",in_filepath)
- # print("--output_file_style",out_style)
- # print("--output_filepath",out_filepath)
-
- # 解析 json 文件
- # obj = json.load(open('./test.json', 'r', encoding="utf-8"))
-
- # 解析动态路径
- obj = json.load(open(in_filepath, 'r', encoding="utf-8"))
-
- # 输出使用
- print(obj, obj[0])
-
调用方式:
- # 传入方式
- $ python test.py ./test.json
-
- # 多个则 空格 分隔开
- $ python test.py 1 2 3
-
- # 导入库
- import argparse
-
- # 1. 定义命令行解析器对象
- parser = argparse.ArgumentParser(description='Demo 参数介绍')
-
- # 2. 添加命令行参数(--xxx 为固定写法)
- parser.add_argument('--name', type=str, help='名称必须传字符串')
- parser.add_argument('--age', type=int, default=20, help='年龄必须传 int,默认 20 岁')
-
- # 3. 从命令行中结构化解析参数
- args = parser.parse_args()
- print('输出参数集合:', args)
- epochs = args.name
- batch = args.age
- print('单个输出 {} {}'.format(epochs, batch))
-
调用方式:
- # 传入方式,必须带上 key,得 key value 的形式传入
- $ python test.py --name dzm
-
- # 多个则一直 key value 的方式往后拼接
- $ python test.py --name dzm --age 30
-
- # 怎么知道传参有哪些
- $ python test.py -h
-
- # 会输出描述
- usage: dzm.py [-h] [--name NAME] [--age AGE]
- Demo 参数介绍
-
- options:
- -h, --help show this help message and exit
- --name NAME 名称必须传字符串
- --age AGE 年龄必须传 int,默认 20 岁
-