gpt4 book ai didi

python 通过 telnet session 在行尾不断报告 "invalid syntax"

转载 作者:行者123 更新时间:2023-11-28 17:41:57 27 4
gpt4 key购买 nike

当通过 telnet session 打开 python 解释器时,发送的每个命令都会被拒绝,并显示“SyntaxError:无效语法”。如何通过 telnet session 成功发送命令?

例子:启动以交互模式提供 python 解释器的服务器:

socat TCP-LISTEN:5092 EXEC:'python -i' 

使用 telnet 连接并从 telnet session 发送命令:

>telnet localhost 5092
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
print "test"

服务器端的结果如下:

>socat TCP-LISTEN:5092 EXEC:'python -i' 
Python 2.7.5 (default, Aug 25 2013, 00:04:04)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> File "<stdin>", line 1
print "test"
^
SyntaxError: invalid syntax
>>>

我在 Mac OS X 10.9.2 上的两个独立终端窗口中运行所有这些。 Python 版本 2.7.5。

我发现了一个描述类似问题 here 的问题,但是,设置 PYTHONUNBUFFERED=NO 没有帮助。

此外,当直接与 python 解释器交互时(即不通过 telnet),不会发生此类错误。

我怀疑是有某物。与 telnet 发送行结尾的方式有关。但是,尝试在 telnet session 中“切换 crlf”以将输入键从 <CR><NUL> 切换到 <CR><LF> 也无济于事。

非常感谢任何帮助/想法/想法!

干杯,卡斯滕

最佳答案

自己找到了原因,所以对于 future 的搜索者:

telnet 在每条用 输入和发送的命令后自动添加一个 CR。但是,python 解释器不接受 CR (\r) 作为命令的一部分,并报告该字符的语法错误(\r 不可打印,因此在 python 生成的错误消息中可能不可见)。另见此处: https://discussions.apple.com/thread/855998

我的解决方案是使用不同于 telnet 的工具进行通信:在本例中为 netcat。

nc -v localhost 5092 

打开一个类似于 telnet 的 session ,其中 CR 不会自动添加到命令中。有用!

关于python 通过 telnet session 在行尾不断报告 "invalid syntax",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23030187/

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