一、尝试实现场景:将一个txt文档内容读到程序的数组内

1、新建一个文档 array.txt,写入内容 ,如:


2、使用命令行读取:


1)在上述新建文档位置相同目录下打开命令提示窗

2)打开文件,读入变量line中,打印可查看结果

3)不知道上述命令怎么办? 百度python怎么读txt 或查看官方文档、教程

3、使用文件读取,在新建文档同级目录下新建 rtext.py文件,编写代码:

importnumpy as np
filename= 'array.txt' #txt文件和当前脚本在同一目录下,所以不用写具体路径
pos =[]
Efield=[]
with open(filename,'r') as file_to_read:whileTrue:
lines= file_to_read.readline() #整行读取数据
if notlines:break
#将整行数据分割处理,如果分割符是空格,括号里就不用传入参数,如果是逗号,则传入‘,'字符。
p_tmp, E_tmp = [float(i) for i inlines.split()]
pos.append(p_tmp)#添加新读取的数据
Efield.append(E_tmp)passpos= np.array(pos) #将数据从list类型转换为array类型。
Efield =np.array(Efield)pass
print(pos)print(Efield)

执行如下:


成功将文档内容写入数据中。接下来可编程处理。处理完成后写入txt。写入使用 file.write("要写入的内容") 即可

4、将文本中的文字转换为图片,需要安装图片插件这里用PILLOW,命令行输入 pip install pillow 安装完成后,新建一个gxh.txt,写入要生成图片的文本


新建 t2p.py文件,插入以下代码

importosfrom PIL importImage, ImageFont, ImageDraw#import numpy as np
filename= 'gzh.txt'
#(100,50)设置图片大小,(255,255,255)设置图片背景钯
font = ImageFont.truetype(os.path.join("fonts", "msyh.ttf"), 20)#设置字体
pos =[]
with open(filename,'r') as file_to_read:whileTrue:
lines= file_to_read.readline() #整行读取数据
if notlines:break
#将整行数据分割处理,如果分割符是空格,括号里就不用传入参数,如果是逗号,则传入‘,'字符。
p_tmp = [str(i) for i inlines.split()]
pos.append(p_tmp)#添加新读取的数据
pass
#pos = np.array(pos) # 将数据从list类型转换为array类型。
pass
for text inpos:
im= Image.new("RGB", (150, 30), (255, 255, 255))
dr=ImageDraw.Draw(im)
text=''.join(text)
dr.text((10, 3),text, font=font, fill="#000000")
im.show()
im.save("%s.png"%text)

命令框输入 python p2t.py,在同目录下生成五张图片,txt文件中一行字符一张图片。

5、使用图形界面输入文本,生成验证码图片,执行效果如下:


新建txt2pic.py文件并插入如下代码:

from PIL import Image, ImageDraw, ImageFont, ImageFilter #导入图片需要库
from tkinter import * #Python自带的库是支持Tk的Tkinter,使用Tkinter,无需安装任何包,就可以直接使用
importtkinter.messagebox as messageboximportrandom,os,PIL#图片对象
classRndpic():#随机颜色1:
defrndColor(self):return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))#随机颜色2:
defrndColor2(self):return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))defdrwRndpic(self,txt):#240 x 60:
width = 60 * 4height= 60image= PIL.Image.new('RGB', (width, height), (255, 255, 255))#创建Font对象:
font = ImageFont.truetype(os.path.join("fonts", "msyh.ttf"), 45)#创建Draw对象:
draw =ImageDraw.Draw(image)#填充每个像素:
for x inrange(width):for y inrange(height):
draw.point((x, y), fill=self.rndColor())#输出文字 for t in range(len(txt)):
draw.text((60 * t + 10, 5), txt[t], font=font, fill=self.rndColor2()) #修改text[t]yl rndChar()为生成随机数
#模糊:
image =image.filter(ImageFilter.BLUR)#显示并保存图片
image.show()
image.save(txt+'.jpg', 'jpeg')classApplication(Frame):def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.createWidgets()#生成界面 提示、输入框、执行、退出按键
defcreateWidgets(self):
self.Label= Label(self, text='please 4 char:')
self.Label.pack()
self.txtInput=Entry(self)
self.txtInput.pack()
self.alertButton= Button(self, text='生成图片', command=self.t2p)
self.alertButton.pack()
self.quitButton= Button(self, text='Quit', command=self.quit)
self.quitButton.pack()#定义生成图片函数
deft2p(self):
txt= self.txtInput.get() or 'null'rndpic=Rndpic()
draw=rndpic.drwRndpic(txt)
app=Application()#设置窗口标题:
app.master.title('Hello World')#主消息循环:
app.mainloop()

6.打包项目,生成个人小工具:

在上面txt2pic.py文件目录下打开命令提示窗输入 pyinstaller -F txt2pic.py 打包文件,在生成的dist文件平下找到txt2pic.exe,双击执行即可完成个人图片生成小工具.

总结: 1.图形界面后续学习,现在界面超丑

2.图片只显示4位字符,可修改程序图片大小的设置内容增加通用性

3.画图功能后续学习,初学本案例图片太简陋