在Python中自动化用户输入
我想测试/模糊我的程序aba.py,它在几个地方通过input()函数请求用户输入。我有一个文件test.txt,其中包含示例用户输入(1000+),每个输入都位于新行上。我希望通过将这些输入传递到aba.py来运行程序,并记录响应,即打印出的内容以及是否出现错误。我开始用以下方法解决这个问题:在Python中自动化用户输入,python,input,os.system,fuzzing,Python,Input,Os.system,Fuzzing,我想测试/模糊我的程序aba.py,它在几个地方通过input()函数请求用户输入。我有一个文件test.txt,其中包含示例用户输入(1000+),每个输入都位于新行上。我希望通过将这些输入传递到aba.py来运行程序,并记录响应,即打印出的内容以及是否出现错误。我开始用以下方法解决这个问题: os.system(“aba.pyerrors.txt不起作用吗?如果在python中是一项要求,那么您应该尝试使用子流程()而不是os.system,这样您就可以检查输出
os.system(“aba.py
这只是解决方案的一半,因为它在遇到错误之前一直运行,并且不会将响应记录在单独的文件中。这个问题的最佳解决方案是什么?谢谢您的帮助。您可以这样做:
cat test.txt | python3 aba.py > out.txt
有很多方法可以解决你的问题 #1:功能 将您的程序设置为函数(包装整个内容),然后将其导入到第二个python脚本中(确保返回输出)。例如:
#aba.py
def func(inp):
#你的代码在这里
返回输出
#run.py
从aba导入func
将open('inputs.txt','r')作为inp:
lstinp=inp.readlines()
out=[]
对于lstinp中的项目:
尝试:
out.append(func())
例外情况除外,如e:
#错误
out.append(repr(e))
以open('out.txt','w')作为输出:
out.writelines(['%s\n'%item for item in out])
或者,您可以坚持终端方法:
(见附件)
导入子流程
#循环这个
output=subprocess.Popen('python3 aba.py',stdout=subprocess.PIPE).communicate()[0]
#将其写入文件
您想为自己的输入输入一个值吗?在python中这样做是必要的吗?与中一样,bash$python aba.pyoutput.txt 2>errors.txt
不起作用吗?如果在python中是一项要求,那么您应该尝试使用子流程
()而不是os.system
,这样您就可以检查输出