首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ipython notebook中的OptionParser?

ipython notebook中的OptionParser?
EN

Stack Overflow用户
提问于 2013-06-04 03:23:49
回答 2查看 1.5K关注 0票数 1

我喜欢在ipython笔记本中进行开发,但是当我想要编写一个读取命令行参数(例如,使用OptionParser )的主()函数时,我遇到了一个问题。我希望能够将代码导出到.py文件并从命令行运行它,但我还没有找到一种方法来让main()既可以在notebook中使用预定义参数运行,也可以使用python和命令行参数从命令行运行。秘诀是什么?

如果这一点不清楚,我想这样做:

代码语言:javascript
复制
if __name__ == '__main__':
    # if in the notebook
    vals = {'debug':True, 'tag_file': 't.tags'}
    options = Object()
    for k,v in vals.items():
        options.setattr(k,v)
    args = 'fname1.txt'
    # if running as a command line python script
    from optparse import OptionParser
    parser = OptionParser()
    parser.add_option('-d','--debug',action='store_true',dest='debug')
    parser.add_option('-t','--tags',action='store',dest='tag_file')
    options,args = parser.parse_args()
EN

回答 2

Stack Overflow用户

发布于 2013-06-04 04:33:05

您不能确定您是在IPython笔记本、at控制台或简单的IPython shell中,原因很简单,这三个可以同时连接到相同的内核。

这就像在问,用户正在键入的当前键是什么颜色。你可以通过查看插入的usb设备,在互联网上查找图像并猜测键盘颜色来获得它,但没有什么能保证它会准确,也不能保证它不会改变,而且用户可以有多个键盘插入,甚至绘制键盘。

笔记本电脑也是如此,即使你确定你是在ZMQKernel中,你是在对着It控制台还是are服务器说话呢?同样,您发现您正在与were服务器对话,您是在与JS还是Emacs对话?以此类推。

你唯一能做的事情,你可以问用户。

可靠的是测试你是否在IPython中。

如果你真的但是想要一种方式,因为直到现在,notebook是唯一可以显示Javascript的东西。javascript可以在pyton中执行代码。因此,您可以能够创建一些显示JS的东西,这些JS将信息发送回内核。使用线程和计时器,你可以说你不在笔记本中(但你会有一个竞态条件)。

票数 1
EN

Stack Overflow用户

发布于 2013-06-04 05:28:23

不要担心它们之间的区别。只需设置默认值,除非从命令行覆盖它们,否则请使用这些默认值。

代码语言:javascript
复制
if __name__ == '__main__':

    parser = OptionParser()
    parser.add_option('-d', '--debug', action='store_true', dest='debug',
                      default=True)
    parser.add_option('-t','--tags',action='store',dest='tag_file',
                      default='t.tags')
    options, args = parser.parse_args()
    if not args:
        args = ['fname1.txt']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16904291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档