3.9 argparse - 命令行参数解析
December 8, 2025 · View on GitHub
argparse 是一个功能强大的命令行参数解析库,可以轻松处理复杂的命令行选项。
基本使用
import argparse
# 创建解析器
var parser = new argparse.ArgumentParser
parser.program_name = "myapp"
parser.description = "这是一个示例程序"
# 添加位置参数
parser.add_argument("input", true, "输入文件路径")
parser.add_argument("output", false, "输出文件路径")
# 添加选项
parser.add_option("--verbose", true, false, "显示详细信息")
parser.add_option("--format", false, true, "输出格式")
# 设置别名
parser.set_option_alias("--verbose", "-v")
parser.set_option_alias("--format", "-f")
# 设置默认值
parser.set_defaults("output", "output.txt")
parser.set_defaults("--format", "json")
# 解析命令行参数
try
var args = parser.parse_args(context.cmd_args)
system.out.println("输入文件: " + args.input)
system.out.println("输出文件: " + args.output)
system.out.println("详细模式: " + to_string(args.verbose))
system.out.println("输出格式: " + args.format)
catch e
system.out.println("参数解析错误: " + e.what())
parser.print_help()
system.exit(1)
end
完整示例:文件处理工具
import argparse
class FileProcessor
var verbose = false
var format = "text"
function process(input_file, output_file)
if this.verbose
system.out.println("处理文件: " + input_file)
end
# 读取输入文件
var in_file = iostream.fstream(input_file, iostream.openmode.in)
var content = new string
loop
var line = in_file.getline()
if in_file.eof()
break
end
content += line + "\n"
end
in_file.close()
if this.verbose
system.out.println("读取了 " + to_string(content.size) + " 字节")
end
# 根据格式处理
var processed = null
switch this.format
case "upper"
processed = content.toupper()
end
case "lower"
processed = content.tolower()
end
default
processed = content
end
end
# 写入输出文件
var out_file = iostream.fstream(output_file, iostream.openmode.out)
out_file.print(processed)
out_file.close()
if this.verbose
system.out.println("输出到: " + output_file)
end
end
end
# 主程序
function main(args)
var parser = new argparse.ArgumentParser
parser.program_name = "fileproc"
parser.description = "文件处理工具 - 转换文本格式"
parser.add_argument("input", true, "输入文件路径")
parser.add_option("--verbose", true, false, "显示详细处理信息")
parser.set_option_alias("--verbose", "-v")
parser.add_option("--format", false, false, "转换格式 (text/upper/lower)")
parser.set_option_alias("--format", "-f")
parser.set_defaults("--format", "text")
parser.add_option("--output", false, false, "输出文件路径")
parser.set_option_alias("--output", "-o")
parser.set_defaults("--output", null)
try
var parsed = parser.parse_args(args)
var processor = new FileProcessor
processor.verbose = parsed.verbose
processor.format = parsed.format
var output = parsed.output
if output is null
output = parsed.input + ".out"
end
processor.process(parsed.input, output)
system.out.println("处理完成!")
catch e
system.out.println("错误: " + e.what())
system.exit(1)
end
end
# 运行主程序
main(context.cmd_args)
使用方式:
# 显示帮助
cs fileproc.csc -h
# 基本使用
cs fileproc.csc input.txt
# 指定输出和格式
cs fileproc.csc input.txt -o output.txt -f upper
# 详细模式
cs fileproc.csc input.txt -v --format=lower