Python应用实例
程序员文章站
2022-07-15 08:11:42
...
该Python应用实例包含以下两种操作:
1.填充用户假数据的小工具(数据写入txt文本)。
2.txt文本写入excel文件。
3.合并上述两种操作。
接下来就详细说明实现操作。
一、填充用户假数据的小工具。
父类:FakeUser
功能:
1).随机姓名 a.单字名 b.双字名
2).随机性别
子类:SnsUser
功能:
1).随机数量的跟随者 a.few b.a lot
具体代码如下:
import random
ln_path = './name/last_name.txt'
fn_path = './name/first_name.txt'
fn = []
ln1 = [] #单字名
ln2 = [] #双字名
with open(fn_path,'r',encoding='UTF-8') as f:
for line in f.readlines():
fn.append(line.split('\n')[0])
with open(ln_path,'r',encoding='UTF-8') as f:
for line in f.readlines():
if len(line.split('\n')[0]) == 1:
ln1.append(line.split('\n')[0])
else:
ln2.append(line.split('\n')[0])
fn_t = tuple(fn)
ln1_t = tuple(ln1)
ln2_t = tuple(ln2)
class FakeUser():
def fake_name(self, amount=1,one_word=False,two_words=False):
n = 0
while n <=amount:
if one_word:
full_name = random.choice(fn) + random.choice(ln1)
elif two_words:
full_name = random.choice(fn) + random.choice(ln2)
else:
full_name = random.choice(fn) + random.choice(ln1 + ln2)
yield full_name
n+=1
def fake_gender(self,amount=1):
n = 0
while n <= amount:
gender = random.choice(['男','女'])
yield gender
n+=1
class SnsUser(FakeUser):
def get_followers(self,amount=1,few=True,a_lot=False):
n = 0
while n <= amount:
if few:
followers = random.randrange(1,50)
elif a_lot:
followers = random.randrange(200,10000)
yield followers
n+=1
user_a = FakeUser()
user_b = SnsUser()
name_a = open('./name/name.txt','w',encoding='UTF-8')
a_name = []
a_gender = []
l = []
for name,gender in zip(user_a.fake_name(100),user_a.fake_gender(100)):
a_name.append(name)
a_gender.append(gender)
for i in range(0, len(a_name)):
l.append(a_name[i]+' '+a_gender[i]+'\n')
name_a.writelines(l)
name_a.close()
其中
姓文件下载地址:https://video.mugglecode.com/first_name.txt
名文件下载地址:https://video.mugglecode.com/last_name.txt
二、txt文本数据写入excel文件。
1).文本读取函数。
2).写入excel函数。
3)主函数。
import xlwt
from xlutils.copy import copy
import openpyxl
from openpyxl import Workbook,load_workbook
from openpyxl.styles import Font,colors #利用这些可以自行设置字体和颜色
#文本读取函数
def readTxt(file):
ls = list()
with open(file, 'r', encoding='UTF-8') as f:
for line in f.readlines():
#异常处理机制
try:
index1 = line.index(' ')
index2 = line.index('\n')
name = line[:index1]
sex = line[index1+1:index2] #利用切片准确截取主体信息
ls.append((name,sex)) #以元组的形式追加进空列表
except:
print('wrong format!')
f.close()
return ls
#写入excel函数
def write_excel_xls(path, sheet_name, value):
index = len(value) #列表中所含元组的个数,从而确定写入Excel的行数
wb = load_workbook(path) #打开Excel
ws = wb['Sheet'] #选择Sheet工作表
ws.title = sheet_name #修改Sheet名称为sheet_name
sheet = wb[ws.title] #选定该作业表
sheet.column_dimensions['B'].width=15 #设置格式
for i in range(index): #按行加入
sheet.append(value[i])
print(value[i])
wb.save(path) #保存文件
print("题目写入数据成功!")
#主函数
if __name__ == '__main__':
book_name_xlsx = './name/name.xlsx' #文件路径
wb = Workbook()
wb.save(book_name_xlsx)
sheet_name_xlsx = '人员工作簿' #excel名称
art = readTxt('./name/name.txt') #调用读取函数
art.insert(0,('姓名','性别')) #插入表头
write_excel_xls(book_name_xlsx, sheet_name_xlsx,art)#调用写入函数
三、合并上述两种操作为一段完整代码。
import xlwt
from xlutils.copy import copy
import openpyxl
from openpyxl import Workbook,load_workbook
from openpyxl.styles import Font,colors #利用这些可以自行设置字体和颜色
import random
ln_path = './name/last_name.txt'
fn_path = './name/first_name.txt'
fn = []
ln1 = [] #单字名
ln2 = [] #双字名
with open(fn_path,'r',encoding='UTF-8') as f:
for line in f.readlines():
fn.append(line.split('\n')[0])
with open(ln_path,'r',encoding='UTF-8') as f:
for line in f.readlines():
if len(line.split('\n')[0]) == 1:
ln1.append(line.split('\n')[0])
else:
ln2.append(line.split('\n')[0])
fn_t = tuple(fn)
ln1_t = tuple(ln1)
ln2_t = tuple(ln2)
class FakeUser():
def fake_name(self, amount=1,one_word=False,two_words=False):
n = 0
while n <=amount:
if one_word:
full_name = random.choice(fn) + random.choice(ln1)
elif two_words:
full_name = random.choice(fn) + random.choice(ln2)
else:
full_name = random.choice(fn) + random.choice(ln1 + ln2)
yield full_name
n+=1
def fake_gender(self,amount=1):
n = 0
while n <= amount:
gender = random.choice(['男','女'])
yield gender
n+=1
class SnsUser(FakeUser):
def get_followers(self,amount=1,few=True,a_lot=False):
n = 0
while n <= amount:
if few:
followers = random.randrange(1,50)
elif a_lot:
followers = random.randrange(200,10000)
yield followers
n+=1
#文本读取函数
def readTxt(file):
ls = list()
with open(file, 'r', encoding='UTF-8') as f:
for line in f.readlines():
#异常处理机制
try:
index1 = line.index(' ')
index2 = line.index('\n')
name = line[:index1]
sex = line[index1+1:index2] #利用切片准确截取主体信息
ls.append((name,sex)) #以元组的形式追加进空列表
except:
print('wrong format!')
f.close()
return ls
#写入excel函数
def write_excel_xls(path, sheet_name, value):
index = len(value) #列表中所含元组的个数,从而确定写入Excel的行数
wb = load_workbook(path) #打开Excel
ws = wb['Sheet'] #选择Sheet工作表
ws.title = sheet_name #修改Sheet名称为sheet_name
sheet = wb[ws.title] #选定该作业表
sheet.column_dimensions['B'].width=15 #设置格式
for i in range(index): #按行加入
sheet.append(value[i])
print(value[i])
wb.save(path) #保存文件
print("题目写入数据成功!")
#主函数
if __name__ == '__main__':
user_a = FakeUser()
user_b = SnsUser()
name_a = open('./name/name.txt', 'w', encoding='UTF-8')
a_name = []
a_gender = []
l = []
for name, gender in zip(user_a.fake_name(100), user_a.fake_gender(100)):
a_name.append(name)
a_gender.append(gender)
for i in range(0, len(a_name)):
l.append(a_name[i] + ' ' + a_gender[i] + '\n')
name_a.writelines(l)
name_a.close()
book_name_xlsx = './name/name.xlsx' #文件路径
wb = Workbook()
wb.save(book_name_xlsx)
sheet_name_xlsx = '人员工作簿' #excel名称
art = readTxt('./name/name.txt') #调用读取函数
art.insert(0,('姓名','性别')) #插入表头
write_excel_xls(book_name_xlsx, sheet_name_xlsx,art)#调用写入函数
上一篇: C语言读写二进制文件
下一篇: Python日志简单实例