一、文本文档的操作
1.1写入数据
写入数据到文本文档中,指定的文件如果不存在那么会自动创建一个。
一般包括以下4个步骤
- 指定要写入文件的位置和文件的名字
- 打开文件的窗口 w是write,执行的是覆盖写入,重复运行脚本,只会保存最后一次运行的数据;a是append,执行的是追加的操作,每次运行的字符串都会写在文档的后面。我们可以在打开创建文件的时候,通过encoding添加文件的编码格式,一般有中文都是使用utf-8比较多
- 写入数据到文件中
- 关闭保存
覆盖:w
# 指定要写入文件的位置和文件的名字
filename="E:/0723/test/t1.txt" #E:/0723/test/t1.txt是你创建文件的路径
# 打开文件的窗口
f=open(filename,"w") #w是write,执行的是覆盖写入,重复运行脚本,只会保存最后一次运行的数据
# 写入数据到文件中
f.write("curry")
# 关闭保存
f.close()
结果会在E:/0723/test/路径下自动创建一个文件t1.txt
追加操作:a
# 1. 指定要写入文件的位置和文件的名字
filename="E:/0723/test/t1.txt"
# 2. 打开文件的窗口
f=open(filename,"a") #a是append,执行的是追加的操作,每次运行的字符串都会写在文档的后面
# 3. 写入数据到文件中
f.write("\n") #\n是换行,先换行再追加
f.write("James")
# 4. 关闭保存
f.close()
结果:多了一行数据
防止插入数据出现中文乱码:encoding='utf-8'
# 1. 指定要写入文件的位置和文件的名字
filename="E:/0723/test/t1.txt"
# 2. 打开文件的窗口 a是append,执行的是追加的操作,每次运行的字符串都会写在文档的后面
# 在打开创建文件的时候,通过encoding添加文件的编码格式,一般有中文都是使用utf-8比较多防止出现乱码
f=open(filename,"a",encoding='utf-8')
# 3. 写入数据到文件中
f.write('\n')
f.write("科比")
# 4. 关闭保存
f.close()
结果:
1.2读取数据
读取数据也有四个基本步骤:
- 知道要读取的文件在哪里叫什么名字
- 打开这个文件 r就是read,对文件进行读取
- 读取文件的内容
read() 将文件当成一个整体,放在一个大的字符串里面进行输出的 readlines() 将文件当成一个列表,每一行都是列表的一个元素 readline() 每次只读取一行数据
- 关闭文件
# 1. 知道要读取的文件在哪里叫什么名字
filename="E:/0723/test/t1.txt"
# 2. 打开这个文件 r就是read,对文件进行读取
#如果文件有中文,那么编码格式就必须和文件保持一致
f=open(filename,"r",encoding='utf-8')
# 3. 读取文件的内容
#r=f.read() #将文件当成一个整体,放在一个大的字符串里面进行输出的
#r=f.readlines() #将文件当成一个列表,每一行都是列表的一个元素
r=f.readline() #每次只读取一行数据
while r:
print(r.replace('\n',''))
r = f.readline()
# 4. 关闭文件
f.close()
--练习题:手动往E:/0723/test/t1.txt里面加上数据
将文件里面,年龄小于35岁的人名进行输出
# 1. 知道要读取的文件在哪里叫什么名字
filename="E:/0723/test/t1.txt"
# 2. 打开这个文件 r就是read,对文件进行读取
#如果文件有中文,那么编码格式就必须和文件保持一致
f=open(filename,"r",encoding='utf-8')
# 3. 读取文件的内容
li=f.readlines() #将文件当成一个列表,每一行都是列表的一个元素
for line in li:
line=line.replace('\n','')
li=line.split(' ') #以空格分割字符串,字符串有几个空格,split('')里面就要打几个空格
name=li[0]
age=int(li[1])
if age<35:
print(name)
# # 4. 关闭文件
f.close()
'''
杜兰特
字母哥
约老师
莫兰特
'''
1.3操作文件后自动关闭
with open() as f 文件会在读取完成之后自动的进行close关闭
用with...as改成上面的练习题:
filename="E:/0723/test/t1.txt"
with open(filename,"r",encoding='utf-8') as f:
#读取文件的内容
li=f.readlines() #将文件当成一个列表,每一行都是列表的一个元素
for line in li:
line=line.replace('\n','')
li=line.split(' ') #以空格分割字符串,字符串有几个空格,split('')里面就要打几个空格
name=li[0]
age=int(li[1])
if age<35:
print(name)
二、异常捕获操作
在Python中,可以使用try
和except
语句来捕获并处理异常。格式如下:
try:
尝试执行的可能会报错的代码
except 错误的类型 as e:
在出错的时候执行的代码
else:
没有出错执行的代码
finally:
不管是否出错都会执行的代码
一个简单的例子:当打开的一个不存在的文件,运行代码会报错FileNotFoundError;不想代码报错就可以使用异常捕获,把错误打印到控制台。
filename="E:/0723/test/t11.txt"
try:
f=open(filename,"r")
except FileNotFoundError as e:
print('这个文件不存在')
else:
print(f.read())
f.close()
#控制台输出为:这个文件不存在
在异常捕获的时候,通常不知道具体会报什么样的错误,所以写具体的错误类型可能会导致错误被遗漏,所以我们会使用 Exception 关键字来捕获所有的错误。
Exception 是所有的错误和异常的基类
从 t2.txt 的文件开始读取,如果没有这个文件,就读取 t3,一直读取下去,如果读到了某个文件,就停止并且打印这个文件的内容
n=2
flag=True
while flag:
try:
f=open(f"E:/0723/test/t{n}.txt","r",encoding="utf-8")
except Exception as e:
print(f"E:/0723/t{n}.txt 这个文件不存在")
n+=1
else:
print(f.read())
f.close()
flag=False
三、随机数据的使用
Python的random模块提供了几乎所有你需要使用的随机数生成工具。这包括生成各种分布的随机数,随机选择元素,打乱列表等
3.1生成随机整数 random.randint()
import random
print(random.randint(1, 10)) # 输出:[1, 10]范围内的一个随机整数
print(random.randint(10000,99999)) # 输出:[10000,99999]范围内的一个随机整数
3.2生成随机浮点数 random.uniform()
import random
print(random.uniform(1.1, 10.9)) # 输出:[1.1, 10.9]范围内的一个随机浮点数
生成一个0-1之间的随机小数 random.random()
import random
r=random.random() #随机一个0-1之间的小数
print(r)
3.3随机一个元素 random.choice()
随机的范围是字符串、列表、元组
import random
s="abcde"
print(random.choice(s)) # 输出:"abcde"中的一个随机元素
print(random.choice([1, 'a', 3.14, [1, 2, 3]])) # 输出:列表中的一个随机元素
3.4其他一些不常用的
import random
print(random.sample([1, 'a', 3.14, [1, 2, 3]], 2)) # 输出:列表中的两个随机选择的元素
list = [1, 2, 3, 4, 5]
random.shuffle(list)
print(list) # 输出:打乱后的列表
print(random.randrange(65, 91)) # 输出:[65, 91)范围内的一个ASCII大写字母
3.5练习题
1:随机生成 4 位长度的英文验证码,验证码要包含大写和小写的英文
import random #导入一个随机的模块
import string #导入所有字符的模块
print(string.ascii_lowercase) # 输出所有小写字母
print(string.ascii_uppercase) # 输出所有大写字母
s=string.ascii_letters
print(s) #所有大小写字母abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
yzm=''
for i in range(4):
yzm=yzm+random.choice(s)
print(yzm)
2.生成 1000 个手机号码,手机号码每一个都必须是唯一的,将生成的手机号码写入存储到一个文件中
# 生成 1000 个手机号码,手机号码第一位为数字1,每一个都必须是唯一的,将生成的手机号码写入存储到一个文件中
import random
Call_Phone_number=set() #因为要1000个不重复并唯一的数据,与集合的特征一样
while len(Call_Phone_number)<1000: #用len()集合的长度来作为循环条件
the_number='1'+str(random.randint(10000000,99999999))
Call_Phone_number.add(the_number)
with open("E:/0723/test/call_phone_number.xlsx","a") as f:
for i in Call_Phone_number:
f.write(i+'\n') #每写入一条数据换行一次
import random
Call_Phone_number=[] #用列表来存电话号码
while len(Call_Phone_number)<1000: #用len()集合的长度来作为循环条件
the_number='1'+str(random.randint(10000000,99999999))
if the_number not in Call_Phone_number: #需要多加一个生成的号码不在列表中的判断
Call_Phone_number.append(the_number)
with open("E:/0723/test/call_phone_number.xlsx","a") as f:
for i in Call_Phone_number:
f.write(i+'\n') #每写入一条数据换行一次
四、操作系统模块
os模块,可以帮助我们创建文件夹、识别文件的路径、删除文件或者文件夹...
# 导入操作系统模块
import os
# 查看某个文件夹里面文件或者文件夹的名字
ls=os.listdir('E:/0723')
print(ls)
# 判断某个路径是否存在
r=os.path.exists("E:/0723/m.txt")
print(r)
# 创建一个文件夹
os.mkdir("E:/0723/test")
# 删除文件夹
os.rmdir("E:/0723/test")
# 删除文件
#os.remove("E:/0723/m.txt")
# 重命名文件或者文件夹
os.rename("E:/0723/t6.txt", "E:/0723/666.txt")
# 删除一个有文件在里面的文件夹:
# 例如 E:/0723/test 文件夹,里面有N个文件,我们需要先删除所有的文件,最后再删除文件夹。
# 删除一个有文件在里面的文件夹:
# 例如 E:/0723/test 文件夹,里面有N个文件,我们需要先删除所有的文件,最后再删除文件夹。
import os
path="E:/0723/test/"
txt=os.listdir(path)
if len(txt)==0:
os.rmdir(path)
else:
for t in txt:
os.remove(path+t)
os.rmdir(path)