【发布时间】:2015-11-13 02:52:34
【问题描述】:
我已经花了一周时间学习 Python,并且正在尝试编写一段代码,让我可以在 LXTerminal 中自动运行基于文本的 Perl 脚本。我有几个关于一些细节的问题。
我需要我的代码以用户输入的环境文件启动 Perl 脚本,在 Perl 脚本中输入一些特定设置,然后将多个 .txt 文件(一次一个)读入 Perl 脚本。它还需要为每个单独的 .txt 文件重新启动该过程并捕获每个单独的输出(如果每个输出都可以写入单个 .csv 文件会有所帮助)。
要调用 Perl 脚本,我从以下开始:
alphamelts="/home/melts/Desktop/alphamelts"
pipe=subprocess.Popen(["perl", "/home/Desktop/melts/alphaMELTS", "run_alphamelts.command -f %s"]) % raw_input("Enter an environment file:"), stdout=PIPE
假设这是正确的,我现在需要它读取 .txt 文件,输入基于数字的命令,让我的代码等待 Perl 脚本完成计算,并且我需要它来将输出写入 .csv文件。如果有帮助,我正在运行的 Perl 脚本会在程序存在后自动生成一个以空格分隔的文件,其中包含其计算结果,但如果仅将其少数输出写入单个单独的 .csv 文件,那将非常有帮助处理每个 .txt 文件。
不知道从哪里开始,但我绝对必须让这个工作。对复杂性感到抱歉。
谢谢!
【问题讨论】:
-
当您可以预测程序预期的输入时,即如果您事先知道在外部程序提示时用户必须按什么顺序输入哪个答案,那么您可以使用@987654323
pipe的@方法。 -
谢谢,我去看看。
-
如果 Perl 脚本是交互式的,您可能需要查看 pexpect
标签: python perl python-2.7