【问题标题】:Running a Perl script and entering commands into it from Python运行 Perl 脚本并从 Python 向其中输入命令
【发布时间】: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


【解决方案1】:

您可以在 ipython 中做一些非常酷的事情。查看this notebook 了解一些具体示例。至于等待子流程完成,我认为您需要在脚本中添加pause。另外,对于数据处理和导出到 csv 和 excel,我推荐pandas 只是让您入门。

【讨论】:

  • 据我了解的问题是如何与要求用户输入的正在运行的 perl 程序进行通信。
  • 是的,这是我的问题的一部分,二十一点。
猜你喜欢
  • 2017-05-04
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多