使用Python运行交互式python脚本

时间:2014-01-27 11:00:30

标签: python interactive

我有Python脚本,它在运行时接受用户输入并提供一些输出。 示例代码:

import random
l1 = ['Bob', 'Eric', 'Dimitar', 'Kyle']
l2 = ['Scott', 'Mat', 'Con']
n = raw_input('Enter no. of persons:  ')
for i in range(int(n)):
    print random.choice(l1) + '  ' + random.choice(l2)

输出:

$ ./generate_name.py 
Enter no. of persons:  2
Kyle  Scott
Eric  Mat

现在我想编写另一个Python脚本,它将使用特定输入多次运行第一个python脚本(输入序列存储在列表中)并将输出记录在文件中。 而且,我不能在第一个Python代码中进行任何更改。

我可以使用subprocess模块运行脚本并记录输出但是如何处理交互式用户输入部分?

2 个答案:

答案 0 :(得分:0)

我看到两个选项:您可以将其作为单独的进程运行,并确实使用subprocess,例如

sp = subprocess.Popen(['./generate_name.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
sp.stdin.write("2\n")
sp.stdin.close()
answer = sp.stdout.read()
status = sp.wait()

或者你带上你的脚本和exec。在执行此操作之前,您可以重定向sys.stdinsys.stdout,然后您可以捕获并监控所做的所有更改。这样,您就可以在一个进程中运行它。

答案 1 :(得分:0)