问题标签 [python-interactive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
11300 浏览

python - 为什么要使用 Python 交互模式?

当我第一次开始阅读 Python 时,所有的教程都让你使用 Python 的交互模式。很难保存、编写长程序或编辑现有的行(至少对我而言)。与打开 code.py 文件并在该文件上运行解释器相比,编写 Python 代码似乎要困难得多。

我来自 Java 背景,所以我对为程序编写和编译文件有着根深蒂固的期望。我也知道,如果某个功能在某种程度上没有用,那么它在 Python 文档中就不会那么突出。那么我错过了什么?

0 投票
2 回答
1886 浏览

python - 从 Python 脚本中调用 Python 交互式解释器

有没有办法从脚本中启动 Python 解释器,其方式类似于仅使用python -i以便保留当前脚本中的对象/命名空间等?不使用的原因是脚本初始化了与 XML-RPC 服务器的连接,如果出现错误python -i,我需要能够停止整个程序。在有有效输入之前我不能循环,因为显然我不能做这样的事情:

因为:

不幸的是,python -i在它打印出回溯后立即启动解释器,所以我不得不从脚本中调用交互式解释器 - 替换脚本的执行以保持服务器连接

0 投票
1 回答
1622 浏览

python - 为什么我的代码可以从交互式 shell 运行,但从文件运行时却不行?

我正在尝试使用该pprint模块来检查 Python 中的一些变量,我可以很高兴地使用交互式 shell 和下面的代码来完成:

但是,当我将上述内容放入pprint.py并使用它运行时python pprint.py,出现错误:

与交互式 shell 相比,从文件运行 Python 代码时调用模块的方式有什么不同?

0 投票
1 回答
400 浏览

python - 是否可以让 Python 交互式解释器在加载时运行脚本?

在处理项目时,我的脚本通常有一些样板代码,例如添加路径到 sys.path 和导入我的项目的模块。每次我启动交互式解释器以快速检查某些内容时,运行这个样板代码会变得乏味,所以我想知道是否可以将脚本传递给解释器,让它在它变得“交互式”之前运行。

0 投票
1 回答
106 浏览

python - 从 std in 读取时,python 交互模式不起作用

给定以下 python 脚本....

...我得到以下输出:

...换句话说,它不会挂在 python 控制台中,而是回到 bash。有谁知道如何让它留在python控制台中???

0 投票
2 回答
133 浏览

python - 如何将 InteractiveInterpreter 对象的当前状态存储在数据库中?

我正在尝试构建一个在线 Python Shell。我通过创建一个实例来执行命令InteractiveInterpreter并使用命令runcode。为此,我需要将解释器状态存储在数据库中,以便可以跨命令使用全局和局部命名空间中的变量、函数、定义和其他值。有没有办法存储InteractiveInterpreter可以稍后检索并作为参数传递localInteractiveInterpreter构造函数的对象的当前状态,或者如果我不能这样做,我必须有哪些替代方法来实现上述功能?
下面是我想要实现的伪代码

在这里,会话是一个包含所有必要信息的表的实例。

0 投票
0 回答
228 浏览

python - 如何正确重定向子进程的输出?

我正在为 Windows 做一个简单的 shell 替换,称为 shellpy(用于学习目的)。我显然希望 shell 独立于 Windows CMD,所以我将所有输出重定向到 StringIO 对象。到目前为止,它运作良好。

但是我在我的小 shell 中运行 Python 交互式解释器时遇到了一个问题。显然,交互式解释器将所有内容写入stderr,除了打印输出,它写入stdout。使用我的方法,我得到如下输出:

我无法理解这一点。我理解我的代码的方式是;每次子进程的 stdout 或 stderr 写入一个字节的数据时,它都会重定向到我的 shell 中的适当打印函数。那么,这两者怎么会重叠呢?Python解释器肯定不会同时写入两个文件描述符吗?我的方法有缺陷吗?如果是这样,我应该如何重定向子进程的输出?

注意:很难在问题标题中描述我的问题,如果您能想到更好的东西,请随时编辑它。


此代码启动子流程:

这是重定向函数,它利用线程不断轮询子进程以获取输出:

函数self.print_textself.print_error目前只是sys.stdout.write.

0 投票
2 回答
1589 浏览

python - 同时读/写python subprocess.Popen

我有一个简单的 C 程序,它的工作方式如下: 请求输入 Print it 再次请求另一个输入 Print

现在我正在使用 python 来调用这个程序。

这工作正常。同样与沟通它的工作正常。

但是当我尝试做这样的事情时它不会工作

以下是几件事: 1. 我看到了 pexpect,但我认为我们应该提前给出程序要求的内容。2. 我可以重新打开封闭的子流程管道吗?

我将上面的脚本用作 CGI,我不知道为什么,但 subprocess.call 不起作用。谁能解释为什么?

编辑:

我正在做一个基于 Web 的项目,用户使用 C、C++ 或 JAVA 编写代码并在浏览器上执行它们。所以首先我想到了使用 PHP,但我找不到调用程序并以交互方式运行它们的方法。然后我看到了python子进程模块。当我使用 subprocess.call 时,解释器中的一切工作正常。但是相同的 python 程序将其保存为 .cgi 并在浏览器中打开它时不起作用。然后我开始查看 subprocess.popen。但是有了这个,我需要在开始时提供所有输入,然后运行代码。我想要做的是在浏览器中运行一个交互式会话。

编辑2:所以我想要的是用户在浏览器中运行程序并在需要时在提供的文本框中输入输入,并且该输入被重定向到子进程的标准输入并基于它输出。

编辑 3:cprog.c

0 投票
3 回答
1943 浏览

python - os x 10.6.8 - Cannot input non-ASCII/UTF-8 chars (e.g: å, ä, ö) in Python Interactive Mode

Running OS X 10.6.8 Snow Leopard I cannot input the scandinavian letters into the interpretive mode. The terminal bell sounds for every keystroke and nothing shows up. All letters show up as normal in the regular terminal environment. Inputting UTF8 characters works fine in the Terminal, when running a python script, in PyDev and in the REPL

Is there a problem with the interactive mode settings and these special characters?

I have installed and am running python 2.7.3 mainly, but the OS-provided Pythons have this problem too. (i.e when running python2.5 or python2.6 I still experience this problem.) I dont know if installing python 2.7 has changed some under library that it uses, maybe readline (I'm on thin ice here, guessing basically)?

0 投票
3 回答
1805 浏览

python - 在 Python 交互式会话中禁用自动打印

我将举办一个 Python 研讨会,在我的大学 Python 教授一些初级程序员。

我正在寻找一种方法来修改 Python 交互式会话的默认行为,以便表达式不会自动打印出结果。例如,采取以下交互式会话:

这将强制使用该print语句以避免以后混淆。这并不重要,但令我惊讶的是,我无法在任何地方找到任何设置。

我将能够预先配置机器,所以任何解决方案都可以工作。有谁知道这是否可能,或者交互式会话的哪些更改会产生这种效果?