2012-12-27 33 views
0

假设您有一个包含字母,数字逗号分隔的令牌的大文件。你想编写一个程序,从标准输入读取并打印出每行NUMBER + 1。我明白,这个计划非常简单。但是,这里有一个限制 - 你只能在管道中一次读取这个标准,你必须从编写一个空文件开始。将数据传输到python调试器并交互式编写python程序

因此,例如:

猫FILE.CSV | python empty_program.py

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

是这样的可能吗?

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

+0

可能的重复http://stackoverflow.com/questions/9178751/use-pdb-set-trace-in-a-script-that-reads-stdin-via-a-pipe – Fabian

回答

0

cat FILE.csv | python empty_program.py 那么,python会尝试读取“empty_program.py”,并且无法找到任何东西,假设有文件,然后退出。如果该文件不存在,则会出现错误。我测试了它[你应该也能做到这一点,不需要花费很多的努力 - 可能比去写这个问题少很多。因此,我的下一个想法是使用交互式Python进程,但由于你通过stdin提供东西,它不会工作 - 我没有一个好的csv文件,所以我做了“cat somefile.c | python“,并且在”int main()“中使用”无效语法“。我很惊讶它,但我想这是因为#包括被视为评论。

大多数交互式编程语言都是从标准输入读取的,所以你不能真正做你所描述的任何一种。

我很不确定你为什么要这样做。如果你的第一个程序能产生相关的程序代码,你为什么不把它放在一个文件中,让python读取这个文件......而不是跳过箍环?请注意,IDE与命令行程序不同。我非常肯定,如果你努力工作,你可以编写一个C程序,用Python插件来访问Eclipse IDE。但这确实是在艰难地做着事情。为什么有人会想花这么多的努力来实现这么少,我不明白。

对不起,但我并没有真正看到你想要做的事情 - 我相信你在那里有一些好主意,但我确定实施细节需要处理。

+0

我想能够编写一个读取文件的python脚本,但只做一次。换句话说,让一个脚本从标准输入中获取一个流,并向每个数字添加一个流。所以1 \ n2 \ n \ 3 \ n会在标准输出上变成2 \ n \ 3 \ n4 \ n。你可以用“交互式”的方式建立这个程序,而不必遵循传统的方式:1)编写程序2)运行程序3)如果失败,回到(1),而是为了能够交互地改变程序,写了+ = 2而不是+ = 1?有点像我在问题中提到的VBA/Excel的功能。 – user992592

相关问题