简单的命令行程序

volkanic的Python项目详细描述


伏尔坎语

一个简单的命令行程序。安装(如有必要,添加sudo

python3 -m pip install volkanic

附件

列出子命令

$ volk
availabe commands:
- a
- o
- runconf
- where

使用volk where

查找python包目录
$ volk where requests
requests	/usr/local/lib/python3.6/site-packages/requests

您可以使用volk o使用默认应用程序打开文件或url。

使用默认文件管理器打开当前目录(finder/explorer.exe/…)

$ volk o .

显示sys.argv

$ volk a \; "hello world" hello python
0	'/usr/local/bin/volk'
1	'a'
2	';'
3	'hello world'
4	'hello'
5	'python'

子命令协议

假设您有一个名为newpkg

的包
newpkg
├── MANIFEST.in
├── docs
├── newpkg
│   ├── __init__.py
│   ├── algors.py
│   ├── formatters.py
│   ├── main.py
│   └── parsers.py
├── requirements.txt
├── setup.py
└── test_newpkg

在一个功能模块中,例如newpkg/newpkg/formatter.py, 提供一个只接受两个参数的入口函数:

importargparsedefformat_text(path):# actual code herereturndefrun(prog=None,args=None):desc='human readable formatter'parser=argparse.ArgumentParser(prog=prog,description=desc)parser.add_argument('-i','--input-file',help='path to your input file')ns=parser.parse_args(args)format_text(ns.input_file)

newpkg/newpkg/main.py中的子命令注册表:

importvolkanicentries={# shorthand for "newpkg.formatter:run": "fmt","newpkg.formatter":"fmt","newpkg.parsers:run_yml_parser":"yml","newpkg.parsers:run_ini_parser":"ini",}registry=volkanic.CommandRegistry(entries)

注意newpkg.formatternewpkg.formatter:run的简写。

newpkg/setup.py

中配置top命令
fromsetuptoolsimportsetupsetup(name="newpkg",entry_points={"console_scripts":["newcmd = newpkg.main:registry"]},# more arguments)

安装程序包newpkg或链接到python3 setup.py develop

现在您有了命令newcmd

$ newcmd
availabe commands:
- fmt
- ini
- yml

使用子命令运行fmt

$ newcmd fmt -h

运行yaml

创建一个yaml文件,例如print.yml

default:module:builtinscall:printargs:-volkanic-commandkwargs:sep:"-"end:"~"

运行

$ volk runconf print.yml
volkanic-command~

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java可以从struts传递<param/>。xml作为隐藏参数?   带有文件字符串的java建议   安卓中带有用户名和密码的java RTSP流   eclipse如何在我的java代码中导入CSVreader特性?无论出于什么原因,我都不能使用cvsreader功能   Java类型推断在编译时失败,但Eclipse编译并运行良好   SpringBootJava。木卫一。IOException weblogic。乌提尔斯。编译器。ToolFailureException   在Spark中排序时出现java NotSerializableException   java在整数数组中查找缺少的数字   Angular 4中的AES 128加密和Java中的解密   显示GUI的java问题   java不包括ant build in javadocs中的文件   关闭弹出窗口后关闭java平台| JavaFX   java使用for循环还是while循环进行迭代?   java如何使用POI Apache获取生成的Excel文件中列的大小或长度   java Thornttail ArquillianTest,带有用于pactProvider测试的h2数据库   为什么XPATH(Java7)选择了太多的节点?   在自定义远程webapp上将数据附加到我的HDFS时发生java异常   xml如何在java多模块项目中创建bean entityManagerFactoryBean?   ConcurrentHashMap中的java死锁   Tomcat Java内存选项保存在哪个文件中