gpt4 book ai didi

python - 如何在 Jupyter Notebook 中模拟用户输入?

转载 作者:太空宇宙 更新时间:2023-11-03 20:07:11 25 4
gpt4 key购买 nike

我使用的笔记本要求一些用户输入。我可以更改 Jupyter Notebook 中的代码,但无法更改 Jupyter Notebook 所依赖的 Python 库的代码。用户输入请求来自这些库之一。

Jupyter Notebook 是否可以自动发送一些预定义的用户输入?也就是说,模拟用户输入?

例如,在以下 Jupyter Notebook 单元中,我希望 Jupyter Notebook 在用户提示期间自动输入 O,以便用户不必自己输入任何输入:

enter image description here

用户输入通过以下代码来自某个库:

inp = input ("Dataset with same name already exists.\nEnter 'O' to Overwrite or 'L' to Load the existing one." )

最佳答案

我回答时的环境:

jupyter core     : 4.6.3
jupyter-notebook : 6.1.4
ipython : 7.19.0
ipykernel : 5.3.4
jupyter client : 6.1.7

您可以使用上下文管理器将 input 临时替换为您要重新输入的消息。此代码应该在一个单元格的范围内工作:

from contextlib import contextmanager
import builtins

@contextmanager
def repeat(answer: str):
try:
original_input = builtins.input

def mock_input(*args, **kwargs):
return answer

builtins.input = mock_input
yield

finally:
builtins.input = original_input


#TEST
with repeat('O'):
answer_1 = input('Continue?')
answer_2 = input('Continue?')
answer_3 = input('Continue?')

print(answer_1)
print(answer_2)
print(answer_3)

如果它不起作用或者您想替换多个单元格的input(假设您同时运行多个或所有单元格),您可以尝试这样的操作:

from ipykernel.ipkernel import IPythonKernel

ipython_input = IPythonKernel._input_request

def my_input(*args, **kwargs):
print('Hello world!')
return ipython_input(*args, **kwargs)

IPythonKernel._input_request = my_input

只需将 my_input 的正文替换为您需要的内容即可。

作为替代方案,尝试替换 IPythonKernel.raw_input 而不是 _input_request,这是 Jupyter 中 input 的第一个方法。

关于python - 如何在 Jupyter Notebook 中模拟用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58908777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com