当前位置: 首页 > backend >正文

多语言笔记系列:使用用户输入

使用用户输入

在笔记本中,能够向用户询问某些值通常很有用。查询参数、身份验证令牌和文件路径是用于参数化笔记本的常见信息示例,以便在不同数据或不同用户之间重用它。
有几种不同的方法可以避免在笔记本中硬编码这些值。

魔术命令中的输入提示

在任何魔术命令中,您都可以使用@input标记代替特定值提示用户输入参数值。这将适用于任何魔法命令。

比如:在共享变量命令 #!set 中:

#!set --name userInput --value @input("请输入姓名")Console.WriteLine($"用记输入内容为:{userInput}");

运行上面单元格时,VS Code窗口顶部会显示一个输入提示
在这里插入图片描述

如果填写一个值并按Enter键,则该值将传递给相应的魔术命令参数。在这个例子中,可以在变量视图中看到输入的值:
在这里插入图片描述

There are a few ways that you can customize the behavior of an @input or @password. (The following examples use @input but all of these will also work with @password.)
有几种方法可以自定义@input@paswword的行为。(以下示例使用@input,但所有这些示例也适用于@password)

指定提示词

可以使用以下任一语法自定义用户提示。这两个示例都显示了相同的提示:

#!set --name myVariable --value @input:"请输入一个值"
Console.WriteLine($"输入的值是:{myVariable}");#!set --name myVariable2 --value @input:{"prompt": "请输入一个值"}
Console.WriteLine($"输入的值是:{myVariable2}");

第一个例子是第二个例子的简写。自定义@input行为的其他方式将遵循第二种模式,使用JSON传递参数。

保存输入值

有时,@input的值对于给定的用户来说不会随着时间的推移而改变。但是关闭并重新打开笔记本电脑或重新启动内核会导致内存状态丢失,如果您将用于给定@input的值每次都是相同的,您可以选择保存该值,这样您就不必不断重新输入它。

要重用输入的值,可以在@input参数中指定saveAs属性:

#!set --name myConfigFile --value @input:{"saveAs": "此配置值只输入一次"}

当这个@input第一次运行时,它将像往常一样产生一个提示。

然而,输出将指示该值已存储以供将来重用,并包括在以后想要更改时重置此值的说明。

下次运行包含输入提示且saveAs设置为该名称的单元格时,将不会显示提示。将使用之前保存的值,并显示提醒消息以表明这一点:
在这里插入图片描述

此功能由PowerShell SecretManagement和SecretStore模块提供支持。它将把值安全地存储在运行PowerShell内核的计算机上。对于大多数用例,这将是您的本地计算机,但例如,如果您使用GitHub CodeSpaces运行笔记本电脑,则该值将存储在运行开发容器的VM上,这意味着当VM被回收时,该值将消失。

键入提示

为@input标记提供的所有值都是字符串,但有时对于您希望在笔记本中接收的字符串类型,可以使用更符合人体工程学的UI。

例如,如果您期望的是现有文件的有效路径,那么文件选择器将提供比纯文本输入更好的体验。

这是通过@input参数上的type属性来支持的。

#!set --name myConfigFile --value @input:{"type": "file"}

在这个例子中,显示的不是VS Code窗口顶部的文本输入框,而是一个文件对话框。
在这里插入图片描述

单个输入支持的输入类型目前仅限于文本和文件,但当单个魔术命令中存在多个输入时,可以使用其他类型,如下一节所述。

多输入

当一个魔术命令中有多个@input或@password标记时,单元格的输出区域会显示一个表单,每个表单都有字段。这里有一个例子:

#!set --name @input:{"prompt": "请输入颜色名"} --value @input:{"type": "color", "prompt": "选择一种颜色,可以是任何颜色"}

请注意,前面的所有@input自定义都是可用的。在这个例子中,您可以看到显示了一个颜色选择器,因为@input小部件的type属性被设置为color。
支持所有标准HTML输入类型。

在.net core 代码中使用 用户输入

也可以在.NET代码直接提示用户输入,而不是使用魔术命令。以下是C#中提示单个输入的示例:

using Microsoft.DotNet.Interactive;var input_2 = await Kernel.GetInputAsync("输入一个数字.");Console.WriteLine($"本次输入的是:{input_2}");

生成的提示看起来与在magic命令中使用@input时显示的提示相同。

还可以使用此API提供类型提示,web视图可以使用此提示来显示更具体的UI。

using Microsoft.DotNet.Interactive;var input = await Kernel.GetInputAsync("Please pick a file.",typeHint: "file");

如果类型提示是前端可以理解的,您将看到相应的弹窗;

否则,它将退回到简单的文本输入。

密码和其他秘密

有些笔记本输入很敏感,你不希望它们以可读的形式保存在笔记本的代码单元格或输出中。
您可以使用 Kernel.GetPasswordAsync

using Microsoft.DotNet.Interactive;var input = await Kernel.GetPasswordAsync("请输入一个连接字符串");

命令行参数输入

[本节描述了未来可能添加到核心.NET Interactive产品中的实验功能。]

笔记本电脑提示用户输入的功能解决了许多问题。但在自动化场景中(例如将笔记本电脑用作自动化工具或运行笔记本电脑的测试),没有用户在场来响应提示。

这个。NET REPL具有从命令行运行笔记本的功能,无需UI或用户。为了能够为已知输入提供值。NET REPL可以识别magics中的@input:-前缀标记,并允许您在命令行传递这些输入的值。

通过运行以下命令并将路径传递给笔记本,可以找出笔记本需要哪些参数。(这适用于.ipynb和.dib文件。)

dotnet repl describe /path/to/notebook.ipynb

dotnet repl-descripte 命令将显示笔记本所需的参数,并显示如何使用命令行选项传递它们的示例:

在这里插入图片描述

http://www.xdnf.cn/news/1624.html

相关文章:

  • Python爬虫爬取图片并存储到MongoDB(注意:仅尝试存储一条空的示例数据到MongoDB,验证MongoDB的联通性)
  • 220V转18V600mA非隔离芯片WT5110
  • 【防火墙 pfsense】1简介
  • Freerots----任务通知
  • Qt本地化 - installTranslator不生效
  • Atlas 800I A2 离线部署 DeepSeek-R1-Distill-Llama-70B
  • 2025年土建施工员考试题库及答案
  • Control Center安卓版:自定义控制中心,提升手机操作体验
  • PostgreSQL 分区表——范围分区SQL实践
  • 【金仓数据库征文】——金仓数据库:国产数据库的卓越之选
  • Docker-高级使用
  • 反射,枚举,lambda表达式
  • 网页版 deepseek 对话问答内容导出为 PDF 文件和 Word 文件的浏览器插件下载安装和使用说明
  • 【axios取消请求】如何在token过期后取消未响应的请求
  • 针对密码学的 EM 侧信道攻击
  • git 操作
  • Golang编程拒绝类型不安全
  • 嵌入式人工智能应用-第三章 opencv操作8 图像特征之 Haar 特征
  • springboot整合redis实现缓存
  • 协作开发攻略:Git全面使用指南 — 第二部分 高级技巧与最佳实践
  • 无标注文本的行业划分(行业分类)算法 —— 无监督或自监督学习
  • 【TensorFlow深度学习框架】从数学原理到工业级应用
  • 硬件工程师面试常见问题(7)
  • 【GIT】github中的仓库如何删除?
  • Trae+DeepSeek学习Python开发MVC框架程序笔记(四):使用sqlite验收用户名和密码
  • 从指标定义到可视化:基于衡石指标平台的全链路数据治理实战
  • 4.1.1 类的序列化与反序列化(XmlSerializer)
  • 一文走进GpuGeek | 模型调用
  • Python 面向对象练习
  • 探秘 FFmpeg 版本发展时间简史