当前位置:  开发笔记 > 编程语言 > 正文

如何整合ZSH和(i)python?

如何解决《如何整合ZSH和(i)python?》经验,为你挑选了2个好方法。

我爱上zsh了很长一段时间,最近我一直在发现ipython互动翻译的优势python.能够cd,ls,运行或者!确实非常方便.但是现在在ipython中使用这样一个笨拙的shell感觉很奇怪,我想知道如何更好地整合我的zsh和我的ipython.

当然,我可以在python中重写我的.zshrc和我的所有脚本,并从ipython模拟我的大部分shell世界,但感觉不对.而且我显然还没准备好将ipython用作主shell.

所以,我的问题是:你如何在shell和python命令循环之间有效地工作?我错过了一些明显的整合策略吗?我应该在emacs中做所有这些吗?



1> chiggsy..:

我在zsh列表上问了这个问题,这个答案对我有用.因人而异.

在genutils.py后行

如果没有调试:

删除行:

stat = os.system(cmd)

替换为:

stat = subprocess.call(cmd,shell = True,executable ='/ bin/zsh')

你看,问题是那个"!" call使用os.system来运行它,默认为manky old/bin/sh.

就像我说的,它对我有用,虽然我不确定幕后会出现什么问题.


.zshrc只能在交互式shell中读取./ bin/zsh -i是你如何强制zsh进行交互,因此阅读.zshrc我希望我去年知道这一点.

2> Toni..:

您可以通过使用感叹号启动它们来运行shell命令,并在python变量中捕获输出.示例:列出目录中的/tmp目录:

ipy> import os
ipy> tmplist = !find /tmp
ipy> [dir for dir in tmplist if os.path.isdir(dir)]

list对象是一个特殊的ipython对象,有几个有用的方法.示例:列出以.pdf结尾的文件

ipy> tmplist.grep(lambda a: a.endswith('.pdf')) # using a lambda
ipy> tmplist.grep('\.pdf$') # using a regexp

通过阅读魔术命令列表,您可以做很多事情:

ipy> %magic

请参阅Ipython文档的shell部分.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有