Python使用Faker模拟网络虚假数据并保存到Exscl中
1.需要使用三个包,分别将他们导入进项目
sys包用于在命令行执行
from faker import Faker
import xlwt
import sys
2.在我们进行前,先需要创建一个列表,该列表中包含各类信息
例如:电话,出生日期,所属省份(还可添加别的属性,调用faker的方法即可)
def getInformationList():
InformationList = []
faker = Faker(locale='zh_CN')
InformationList.append(faker.phone_number())
InformationList.append(faker.date(pattern="%Y-%m-%d", end_datetime=None))
InformationList.append(faker.province())
return InformationList
3.编写一个方法,用于接收用户输入的信息
需要是整数,该数字用来显示生成多少条数据,例如输入500,就是生成500条数据,for循环表示,生成字典,字典的 key为名字,Value为信息(列表形式)
def getInformationDict(num):
InformationDict = {}
faker = Faker(locale='zh_CN') # 添加
for _ in range(int(num)):
InformationDict[faker.name()] = getInformationList()
return storedData(InformationDict)
4.编写一个方法,该方法用来将生成的数据写入到Ecsel中
先创建页签,再生成表头,最后通过循环字典中的value来生成数据
生成完成后,进行保存
def storedData(InformationDict):
filename = xlwt.Workbook(encoding='utf-8')
worksheet = filename.add_sheet('sheet1')
worksheet.write(0, 0, label="姓名")
worksheet.write(0, 1, label="电话号码")
worksheet.write(0, 2, label="生日")
worksheet.write(0, 3, label="所属省份")
i = 1
try:
for name in InformationDict:
worksheet.write(i, 0, label=name)
worksheet.write(i, 1, label=InformationDict[name][0])
worksheet.write(i, 2, label=InformationDict[name][1])
worksheet.write(i, 3, label=InformationDict[name][2])
i = i + 1
except IndexError:
return "Error:列表索引超出了取值范围"
else:
filename.save('E:\zidonghuaUI\DataFile.xls')
return "执行成功"
5.最后,写入执行
if __name__ == '__main__':
num = sys.argv[1]
print(getInformationDict(num))
完整代码如下:
from faker import Faker
import xlwt
import sys
def getInformationDict(num):
InformationDict = {}
faker = Faker(locale='zh_CN') # 添加
for _ in range(int(num)):
InformationDict[faker.name()] = getInformationList()
return storedData(InformationDict)
'''创建一个列表,列表中包含各类人物信息'''
def getInformationList():
InformationList = []
faker = Faker(locale='zh_CN')
InformationList.append(faker.phone_number())
InformationList.append(faker.date(pattern="%Y-%m-%d", end_datetime=None))
InformationList.append(faker.province())
return InformationList
def storedData(InformationDict):
filename = xlwt.Workbook(encoding='utf-8')
worksheet = filename.add_sheet('sheet1')
worksheet.write(0, 0, label="姓名")
worksheet.write(0, 1, label="电话号码")
worksheet.write(0, 2, label="生日")
worksheet.write(0, 3, label="所属省份")
i = 1
try:
for name in InformationDict:
worksheet.write(i, 0, label=name)
worksheet.write(i, 1, label=InformationDict[name][0])
worksheet.write(i, 2, label=InformationDict[name][1])
worksheet.write(i, 3, label=InformationDict[name][2])
i = i + 1
except IndexError:
return "Error:列表索引超出了取值范围"
else:
filename.save('E:\zidonghuaUI\DataFile.xls')
return "执行成功"
if __name__ == '__main__':
num = sys.argv[1]
print(getInformationDict(num))
6.关于执行,直接在命令行下执行即可,如下:
如图所示,直接在命令行输入.py文件+需要生成数据的行数,则会生成对应数量的数据,并自动存入到Exscl中。