微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将iPython设置为普通用户的简化命令shell

摘要
是否可以将i Python设置为普通用户(cd,ls,mkdir,rm等)的基本dos / bash命令行终端,然后公开一些额外的专有命令?

深度:
我在一家视频游戏公司工作,用户从未在生产渠道中体验过“好”的CLI.所以作为回应,我已经工作了一段时间在python中使用cmd.py编写CLI,重新创建常用的dos命令,然后使用我自己的自定义命令扩充它们以执行各种操作,例如:快速跳过预定义的生产文件夹,简化的perforce管理命令,使用递归的ant-glob模式查找/导入文件到我们的创作工具……等等……

在这个过程中,我偶然发现了ipython.我对它不是很熟悉,但我已经感觉到它应该是我应该使用的,因为它可以免费提供我想要的许多东西.它完美地处理了ansi的颜色.所有shell命令都可以通过“!”获得,可以使用“|,>,<”所有内置的shell功能都是免费的,好处还在继续...... 需要注意的是,我的目标受众很容易受到CLI的威胁……所以当他们输入“more textfile.txt”作为输入时,他们会期望打印文件内容认dos行为,而不是:

In [42]: more textfile.txt
  File "<ipython-input-42-e442b4ca857b>",line 1
    more file.txt
            ^
SyntaxError: invalid Syntax

当然,“!more textfile.txt”会做他们期望的,但我不希望他们必须输入“!”对于他们将使用的基本上95%的命令.

所以我正在寻找一种方式以一种完全简化的方式启动ipython,在我的理想(幻想或许)世界中:

>所有shell命令(cd,ls / dir,more,rm / del等等)都可以在最前面访问,而不需要任何“!”
>所有python命令(import,def,class,for,print,while等等)将无法访问,除了从预定义的几个专有命令执行各种管道操作,可能会保留基本算术命令?

作为奖励:一种在认ipython和非常克制和简化的命令shell替换版本之间交替的方法,我梦想着… ex:输入“normal”将恢复所有ipython的认行为……并输入“cli” “会回到简化版.

最后的注意事项:我正在寻找的可能是一个傻瓜的差事,我应该坚持使用我自己的笨拙的CLI脚本在命令shell中启动python.exe,并称它为一天……但我想如果我是像iPython这样做是远程可能的,Stackoverflow是我快速得到答案的地方:)

解决方法

IPython用于接近你所要求的东西,它在0.11版本中被删除,因为缺乏使用/测试和兴趣.我认为将其恢复是可以接受的,但是我不确定它将涉及的工作量,因为我们知道架构已经发生了很大的变化.

我将强调你可能想要/不想这样做的一些原因,以及一些替代和技术要点.

>你将永远无法获得IPython的完整真实shell体验
那些不会工作的东西(例如,在2个流程架构中获取,或者在其中使用破折号命令)
>防止Python的完全使用将非常困难.
>使用别名或魔法定义自己的命令非常简单. (已经指出了
评论,但并不总是有效

IPython本身正在工作的方式看起来存在的东西是有效的python,如果是这样的话.否则假设它是一个魔术,如果它是sens,将它转换为Python语法并执行.然后回退到别名.我猜逻辑可以颠倒,但确定smth是否是有效的shell可能很困难.

您也可以挂钩自己的输入trasformer SageMath在某些地方使用它来允许自定义语法.

我不确定“交替”部分会很容易,但IPython非常灵活,输入转换器是协程库,所以应该是可实时修改的,它仍然可能需要在IPython中使用modif我想要暴露正确的API.

您可能对编写完整的IPython“内核”感兴趣(不要害怕它看起来更简单).也就是说只是获得用户输入和发回输出的部分,其余部分是免费的.如果你看一下IJulia并运行ipython console –profile = julia,你将被丢弃在julia shell中.你也可以在rubyHaskell等地做同样的事情.其他优点是你不需要在python中编写内核,并且它可以与qtconsole,notebook emacs,vim和其他IPython前端一起使用.

我看到问题被提升了3次,我将补充说IPython是开源的,如果有人来,添加功能并帮助我们维护它,我们可以将它添加回核心.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


我最近重新拾起了计算机视觉,借助Python的opencv还有face_recognition库写了个简单的图像识别demo,额外定制了一些内容,原本想打包成exe然后发给朋友,不过在这当中遇到了许多小问题,都解决了,记录一下踩过的坑。 1、Pyinstaller打包过程当中出现warning,跟d
说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Pooling在中文当中的意思是“池化”,在神经网络当中非常常见,通常用的比较多的一种是Max Pooling,具体操作如下图: 结合图像理解,相信你也会大概明白其中的本意。不过Pooling并不是只可以选取2x2的窗口大小,即便是3x3,
记得大一学Python的时候,有一个题目是判断一个数是否是复数。当时觉得比较复杂不好写,就琢磨了一个偷懒的好办法,用异常处理的手段便可以大大程度帮助你简短代码(偷懒)。以下是判断整数和复数的两段小代码: 相信看到这里,你也有所顿悟,能拓展出更多有意思的方法~
文章目录 3 直方图Histogramplot1. 基本直方图的绘制 Basic histogram2. 数据分布与密度信息显示 Control rug and density on seaborn histogram3. 带箱形图的直方图 Histogram with a boxplot on t
文章目录 5 小提琴图Violinplot1. 基础小提琴图绘制 Basic violinplot2. 小提琴图样式自定义 Custom seaborn violinplot3. 小提琴图颜色自定义 Control color of seaborn violinplot4. 分组小提琴图 Group
文章目录 4 核密度图Densityplot1. 基础核密度图绘制 Basic density plot2. 核密度图的区间控制 Control bandwidth of density plot3. 多个变量的核密度图绘制 Density plot of several variables4. 边
首先 import tensorflow as tf tf.argmax(tenso,n)函数会返回tensor中参数指定的维度中的最大值的索引或者向量。当tensor为矩阵返回向量,tensor为向量返回索引号。其中n表示具体参数的维度。 以实际例子为说明: import tensorflow a
seaborn学习笔记章节 seaborn是一个基于matplotlib的Python数据可视化库。seaborn是matplotlib的高级封装,可以绘制有吸引力且信息丰富的统计图形。相对于matplotlib,seaborn语法更简洁,两者关系类似于numpy和pandas之间的关系,seabo
Python ConfigParser教程显示了如何使用ConfigParser在Python中使用配置文件。 文章目录 1 介绍1.1 Python ConfigParser读取文件1.2 Python ConfigParser中的节1.3 Python ConfigParser从字符串中读取数据
1. 处理Excel 电子表格笔记(第12章)(代码下载) 本文主要介绍openpyxl 的2.5.12版处理excel电子表格,原书是2.1.4 版,OpenPyXL 团队会经常发布新版本。不过不用担心,新版本应该在相当长的时间内向后兼容。如果你有新版本,想看看它提供了什么新功能,可以查看Open