【问题标题】:pipe data into python debugger and write the python program interactively通过管道将数据输入 python 调试器并以交互方式编写 python 程序
【发布时间】:2012-12-27 15:04:11
【问题描述】:

假设您有一个包含 LETTER,NUMBER 逗号分隔标记的大文件。您想编写一个从标准输入读取并为每行打印出 NUMBER+1 的程序。很琐碎的程序,我明白了。然而,这里有一个限制——你只能在管道中一次性读取这个标准,并且你必须从编写一个空文件开始。

例如:

猫文件.csv | python empty_program.py

这应该会弹出一个交互式会话,允许您编写您想要的任何代码。由于 empty_program.py 没有调用 stdin.readline(),所以 stdin 缓冲区是适当的。

这样的事情可能吗?

可以做到这一点的一个例子是 Excel VBA 调试器/IDE。它允许您暂停执行——在程序源代码中添加新行并继续执行。

【问题讨论】:

标签: python linux


【解决方案1】:

cat FILE.csv | python empty_program.py 好吧,python 将尝试读取“empty_program.py”,并在其中找不到任何内容,假设有文件,然后退出。如果该文件不存在,则会出现错误。我对其进行了测试[您也应该能够做到这一点,不需要付出太多努力-可能比去 SO 写问题所需的要少得多]。

所以,我的下一个想法是使用交互式 python 进程,但由于您是通过标准输入输入内容,所以它不起作用 - 我没有好的 csv 文件,所以我做了“cat somefile.c| python”,并且在“int main()”处出现“无效语法”。我很惊讶它会走到这一步,但我想那是因为#include 被视为 cmets。

大多数交互式编程语言都是从标准输入读取的,所以你不能用它们中的任何一个来做你所描述的事情。

我不确定你为什么要这样做。如果您的第一个程序可以生成相关的程序代码,那么您为什么不将它放在一个文件中并让 python 读取该文件......而不是跳过箍?请注意,IDE 与命令行程序不同。我很确定,如果你在某件事上足够努力,你可以编写一个 C 程序来使用 Python 插件访问 Eclipse IDE。但这真的很难。为什么有人愿意花这么多精力来实现这么少,我不明白。

抱歉,我真的不明白您尝试做的事情的意义 - 我确信您有一些好主意,但我确信需要处理实施细节。

【讨论】:

  • 我希望能够编写一个读取文件的 python 脚本,但只执行一次。换句话说,假设一个脚本从标准输入获取一个流并为每个数字加一个。所以 1\n2\n\3\n 在标准输出上会变成 2\n\3\n4\n 。您能否以“交互方式”构建该程序而不必遵循传统路径 1) 编写程序 2) 运行程序 3) 如果失败,请返回 (1) 而是能够以交互方式更改程序以防万一写 += 2 而不是 +=1??有点像我在问题中提到的 VBA/Excel 的功能。
猜你喜欢
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-08
  • 2013-05-06
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
相关资源
最近更新 更多