python常用的操作和内置模块

一、文本文档的操作

1.1写入数据

写入数据到文本文档中,指定的文件如果不存在那么会自动创建一个。

一般包括以下4个步骤

  1. 指定要写入文件的位置和文件的名字
  2. 打开文件的窗口    w是write,执行的是覆盖写入,重复运行脚本,只会保存最后一次运行的数据;a是append,执行的是追加的操作,每次运行的字符串都会写在文档的后面。我们可以在打开创建文件的时候,通过encoding添加文件的编码格式,一般有中文都是使用utf-8比较多
  3. 写入数据到文件中
  4. 关闭保存

覆盖: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读取数据

读取数据也有四个基本步骤:

  1.  知道要读取的文件在哪里叫什么名字
  2. 打开这个文件   r就是read,对文件进行读取
  3. 读取文件的内容   
    read()          将文件当成一个整体,放在一个大的字符串里面进行输出的
    readlines()     将文件当成一个列表,每一行都是列表的一个元素
    readline()      每次只读取一行数据
  4. 关闭文件
# 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中,可以使用tryexcept语句来捕获并处理异常。格式如下:

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

30+11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值