更好的python cli集成

pyli的Python项目详细描述


使用python编写更好的脚本

您没有错过编写Perl一行程序吗?或者也许你 比find的所有选项都熟悉python,但是喜欢文本 互动范式?pyli旨在使使用python和 所有的都是电池和你最喜欢的地方:外壳。

安装

pyli可通过pip

pip install pyli

或者直接通过gitsetup.py

git clone https://github.com/thenoviceoof/pyli.git

cd pyli

sudo python setup.py

示例

让我们做些热身运动:

pyli "2+2" # bc

cat file.txt | pyli "line if 'string' in line else None" # grep

cat file.txt | pyli "sum(len(l) + 1 for l in lines)" # wc -m

现在更复杂的是:

log | pyli "str(time.time()) + ' ' + line" # time stamping a line

cat file.txt | pyli "set(w for s in nltk.sent_tokenize(contents) for w in nltk.word_tokenize)" # bag of words a file

cat file.json | pyli "pickle.dumps(json.loads(conts))" >file.pickle

cat space_sep.dat | pyli "json.dumps(dict(parts))" >file.json

也许分开命令是有意义的:

cat index.html | pyli "for l in [a.get('href') for a in bs4.BeautifulSoup(cs).find_all('a')]: print l" | pyli --text='something' "r = requests.get(li); li if text in r.text else None"

cat index.html | pyli "hashlib.sha1(cs).hexdigest()" | pyli "encryptedfile.EncryptedFile(stdout, getpass.getpass()).write(cs)"

也许你想保持一行代码,但python太固执己见了 让您这样做:

pyli -f "`ls -a`" "for l in f.split('\n'):" "    if '.git' == l: print 'git'"

幽门

功能:

  • 自动导入引用的包
  • 填充特殊的面向cli的变量
    • linelil)-允许您访问每一行
    • lineslisls)-访问line生成器
    • contentscontcs)-允许您访问所有stdin 在一个字符串中
    • part,(p)-允许您访问 空格分隔线
    • parts,(ps)-访问part生成器
    • stdinstdoutstderr-指向sys.std*流的快捷方式
    • 接受任意gnu样式的参数(-c,–blah),并使它们可用
    • 打印最后一条语句;如果是赋值,则打印赋值 到变量
    • 如果我们使用line/part,则打印最后一条语句 每行

请注意,在 A时间:还没有人把它们组合成 有道理,所以如果你想要多个变量,你必须 你自己动手吧。

待办事项

  • 将引擎移到美观的ast库中
  • 确保它在更多的蛇中工作,而不仅仅是2.7.3/2.6.9

另请参见issue tracker

许可证

版权所有(C)<;2014>;<;TheNoviceof>;

兹免费准许任何人取得副本 本软件和相关文档文件(“软件”)的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:

上述版权公告及本许可公告须包括在 软件的所有副本或大部分。

本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与软件、使用或其他交易有关 软件。

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

推荐PyPI第三方库


热门话题
java如何在jprogressbar上添加文本?   java生成30到32位之间的随机数   我想从我自己的服务器而不是java worldwind中的nasa服务器获取数据   jsp中带有外部java文件的html计数器   java如何找到运行Servlet的主机和端口   我怎么能看到数学。java中的cos方法计算平方根?   java这个docker run命令做什么?   java如何在将表单提交到servlet后将原始JSP保存在URL中?   如何在Java中访问Arraylist中的字典数据?   java JPA如果我有一个实体被用作复合键,那么级联是否也构成复合键的一部分?   连接Java:文件读取/添加到文件程序时未按预期工作(逻辑错误)   java从Android向PLC发送布尔值   java Get build。gradle文件作为一个。类文件   Youtube API V3 Java无需调用浏览器即可上传视频   java如何在Unittest中测试StackOverflower错误   实现方法中的java异常处理   java这个::instanceMethod在java8中用作方法参数有什么用途   java偶尔会获得javax。邮政使用javamail阅读gmail电子邮件时的FolderClosedException