Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中自动化用户输入_Python_Input_Os.system_Fuzzing - Fatal编程技术网

在Python中自动化用户输入

在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,这样您就可以检查输出

我想测试/模糊我的程序aba.py,它在几个地方通过input()函数请求用户输入。我有一个文件test.txt,其中包含示例用户输入(1000+),每个输入都位于新行上。我希望通过将这些输入传递到aba.py来运行程序,并记录响应,即打印出的内容以及是否出现错误。我开始用以下方法解决这个问题:

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
,这样您就可以
检查输出