将命令行参数传递给 jupyter/ipython 笔记本中的 argv

2023-11-26

我想知道是否可以填充sys.argv(或其他一些结构)在 jupyter/ipython 笔记本中使用命令行参数,类似于通过 python 脚本完成的方式。

例如,如果我要运行一个 python 脚本,如下所示:

python test.py False

Then sys.argv将包含参数False。但是如果我以类似的方式运行 jupyter 笔记本:

jupyter notebook test.ipynb False

然后命令行参数就会丢失。有什么方法可以从笔记本本身访问这个参数吗?


经过大量查看后,我发现非常麻烦的自定义库,但用几行代码解决了它,我认为这非常巧妙。我使用 nbconvert 最终得到一个 html 报告作为输出,其中包含笔记本中的所有图形和 markdown,但像往常一样通过最小的 python 包装器接受命令行参数:

python 文件 test_args.py (正常使用命令行参数):

import sys,os
IPYNB_FILENAME = 'test_argv.ipynb'
CONFIG_FILENAME = '.config_ipynb'

def main(argv):
    with open(CONFIG_FILENAME,'w') as f:
        f.write(' '.join(argv))
    os.system('jupyter nbconvert --execute {:s} --to html'.format(IPYNB_FILENAME))
    return None

if __name__ == '__main__':
    main(sys.argv)

该笔记本包含:

import sys,os,argparse
from IPython.display import HTML
CONFIG_FILE = '.config_ipynb'
if os.path.isfile(CONFIG_FILE):
    with open(CONFIG_FILE) as f:
        sys.argv = f.read().split()
else:
    sys.argv = ['test_args.py', 'input_file', '--int_param', '12']

parser = argparse.ArgumentParser()
parser.add_argument("input_file",help="Input image, directory, or npy.")
parser.add_argument("--int_param", type=int, default=4, help="an optional integer parameter.")
args = parser.parse_args()
p = args.int_param
print(args.input_file,p)

我可以运行 python 笔记本,并像往常一样解析参数:

python test_args.py my_input_file --int_param 12

我倾向于将带有 argparse 调用的块粘贴到 python 包装器中,以便 python 脚本捕获命令行错误并且 -h 正常工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将命令行参数传递给 jupyter/ipython 笔记本中的 argv 的相关文章

随机推荐

  • XDocument.Load() 错误

    我有一些代码 WebRequest request HttpWebRequest Create url WebResponse response request GetResponse using System IO StreamReade
  • 如何缓存表格视图的某些内容?

    我有一个表格视图 其中包含填充单元格的大图像 并且行高是根据图像大小设置的 不幸的是 当滚动到下一个单元格时 表格会严重抖动 有人告诉我 如果我在将行高和图像加载到表中之前对其进行缓存 那么我的表视图将滚动得更顺畅 我的所有数据都存储在 p
  • 如何在 Swift 中调用 Objective-C 类别方法

    在 Swift 中如何调用这样的 Objective C 类别方法 UIColor colorWithHexString NSString hex alpha float alpha 编译器会自动查找常见的 ObjC 命名模式并用 Swif
  • 获取 Android 手机的电池电流值

    我正在尝试收集 Android G1 手机的电量使用统计数据 我有兴趣了解电压和电流的值 然后能够收集本报告中报告的统计数据PDF 我可以通过注册意向接收器来接收 ACTION BATTERY CHANGED 的广播来获取电池电压的值 但问
  • 在Java中创建之前检查kafka中主题是否存在

    我正在尝试使用以下命令在 kafka 0 8 2 中创建一个主题 AdminUtils createTopic zkClient myTopic 2 1 properties 如果我在本地多次运行代码进行测试 则会失败 因为主题已经创建 有
  • Java 中的 ArrayList.toArray() 方法

    我想知道他们为什么要设计toArray中的方法ArrayList在Java中获取数组的输入 ArrayList
  • EF Code First 中的模型 n--n 关系如何自动生成视图正确工作?

    我使用 EF Code First 并且在 n n 关系中遇到问题 假设我们有一位歌手唱某些流派 所以我们需要这个模型 Artist Genre 和 ArtistsGenres 我将模型定义如下 这是我的艺术家模型 public class
  • UITableView 像 Facebook 应用程序一样滚动到底部时会加载更多内容

    我正在开发一个使用 SQLite 的应用程序 我想使用分页机制显示用户列表 UITableView 谁能告诉我当用户滚动到列表末尾时 例如 Facebook 应用程序的主页 如何在列表中加载更多数据 您可以通过添加对您所在位置的检查来做到这
  • 由 MySQL 提供支持的基于 Hibernate 的 Java Servlet 应用程序中的 Hibernate 通信链路故障

    让我描述一下我的问题 我有一个 Java 应用程序 Hibernate 作为 MySQL 上的数据库接口层 我在我的应用程序中收到通信链接失败错误 此错误的发生是一个非常特殊的情况 当我让 mysql 服务器无人值守超过大约 6 小时时 即
  • 使用 Seaborn 绘制 pandas DataFrame 的多列

    假设我有带有列的 DataFrame X Axis col 2 col 3 col n 我需要在 X 轴上绘制第一列并在 Y 轴上绘制其余部分 仅供参考 所有值均已根据 X 轴分组 X 轴值范围为0 25所有其他列值均已标准化为0 1 我希
  • 固定大小的 GridSplitter MinWidth

    我有一个由 GridSplitter 分隔的 2 列的网格 使用以下 XAML 代码
  • 为什么异构查找比较器不是默认的?

    我们在 C 14 中实现了异构查找 我想知道为什么地图 集合等的默认比较器没有更改为 less 如果没有此更改 普通 C 用户将完全错过此功能 并且在 set 中查找 const char 时的性能损失仍然存在 我在公司的代码库中多次看到这
  • 错误:请求实体太大

    我收到以下快递错误 Error request entity too large at module exports Users michaeljames Documents Projects Proj mean node modules
  • 为什么禁用的表单元素中的文本在 Safari 中不呈现为黑色?

    我试图让禁用的输入元素中的文本显示在black 这适用于大多数浏览器 input type text disabled input type text disabled color 000000 然而 在 Safari 版本 6 0 2 中
  • 如何获取子UIView在父视图中的索引?

    我想用交换子视图索引 withSubviewAtIndex 方法 但我怎样才能获得这些视图的索引呢 我已经得到了他们的指点 所以我想可能有类似的方法 parentView indexOfSubview subview 但我在 Xcode 文
  • AspenTech InfoPlus 21 - 如何连接和查询数据

    我将获得对 AspenTech InfoPlus 21 端点的访问权限 但该系统似乎相当遗留 并且没有很好的 公开 记录 我需要查询一些数据 即探索数据库中的内容 我有一些关于连接和查询 InfoPlus 21 历史学家的问题 如何连接到
  • 将 QTextCursor 移动到末尾时出现问题

    我正在尝试在我正在编写的编辑器中实现简单的文本搜索 一切都很好 直到出现这个问题 我正在尝试在这里实现向后搜索 其过程是 向后查找主题 如果没有找到 则蜂鸣一声 如果再次按下查找按钮 则转到文档末尾 重新进行搜索 reachedEnd 是一
  • 教义 - from 中的子查询

    我在 MySQL 中有一个查询 SELECT FROM SELECT COUNT AS count t name AS name FROM tag t INNER JOIN video has tag v USING idTag GROUP
  • 如何解决 Chrome 73 中 bxSlider 项目上的点击事件问题?

    Chrome 更新到版本 73 后 bxSlider 的内部项目单击事件不会触发 如何为新 Chrome 中的元素触发 on click 事件 当幻灯片移动时 它会在 Chrome 中触发 FireFox 一切正常 div class sl
  • 将命令行参数传递给 jupyter/ipython 笔记本中的 argv

    我想知道是否可以填充sys argv 或其他一些结构 在 jupyter ipython 笔记本中使用命令行参数 类似于通过 python 脚本完成的方式 例如 如果我要运行一个 python 脚本 如下所示 python test py