我有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
模块运行脚本并记录输出但是如何处理交互式用户输入部分?
答案 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.stdin
和sys.stdout
,然后您可以捕获并监控所做的所有更改。这样,您就可以在一个进程中运行它。
答案 1 :(得分:0)