python常用模块与文件操作

本文介绍了Python中的几个重要模块,如sys用于获取模块和程序信息,os模块执行系统命令和管理文件,time模块处理时间,random模块生成随机数。同时,详细讲解了文件操作,包括打开、关闭、读取和写入文件的多种方式,以及二进制文件的处理。
摘要由CSDN通过智能技术生成

一 常用模块

python标准库

https://docs.python.org/3/py-modindex.html

1.1 sys

import sys
print(sys.modules)
获取当前程序中引入的所有模块

pprint模块==》pprint()

import sys
import pprint

pprint.pprint(sys.modules)

sys.path

import sys
import pprint

pprint.pprint(sys.path)
作用:返回一个列表,列表中保存的是模块的搜索路径

sys.exit()

import sys


print('hello world')
sys.exit()
print('hello world')

hello world

sys.exit('附加消息')
print('hello world')
sys.exit('过年了,下班了')

1.2 os

用python执行cmd命令

os.system
import os
os.system('echo hello world')

os.getcwd() # 获取当前python的工作目录
os.system('echo hello world')
print(os.getcwd())
 os.mkdir('初雪') # 创建文件夹,括号里面写文件名
 os.rmdir('初雪') # 删除文件夹,只能删除空的
 os.remove('aaa.py') # 删除文件
 os.rename('aaa.py','bbb.py') # 重命名,有两个参数第一个是原名,第二个是新名

print(os.path.exists(path='bbb.py')) # 判断文件是否存在
print(os.path.isfile(path='bbb.py'))  # 判断是否为文件

1.3 time

import time

print(time.time())
print(time.localtime())

1665406023.174183
time.struct_time(tm_year=2022, tm_mon=10, tm_mday=10, tm_hour=20, tm_min=47, tm_sec=3, tm_wday=0, tm_yday=283, tm_isdst=0)
while 1:
    time.sleep(1)  # 休眠一秒钟
    print('helloworld')
    
time.strftime() 有两个参数,第一个参数是格式,第二个参数是要转换的时间

localtime()转换格式:
%Y 年
%m 月
%d 日
%H 时
%M 分
%S 秒

print(time.strftime('%Y/%m/%d %H:%M:%S',time.localtime()))

2022/10/10 21:02:28

1.4 random

import random
需要导包
生成一个大于0,小于1的随机数
a = random.random()
print(a)

左闭右闭区间
random.randint(start,end)
start==> 起点
end==> 终点
b = random.randint(1,100)  # 在1-100之间随机一个整数
print(b)

随机生成元素
c = random.choice(['石头','剪刀','布'])  # 随机生成元素
print(c)

随机生成多个元素,参数大于指定的列表元素数量也不会报错
c = random.choices(['石头','剪刀','布'],k=2)  # 随机生成元素
print(c)

随机生成指定范围的小数
d = random.uniform(1,10)
print(d)

打乱序列类型的顺序
li = [1,2,3,4,5,6,7,8,9,0]
random.shuffle(li)
print(li)

不可变类型不可以被打乱顺序
s = 'hello world'
random.shuffle(s)
print(s)

4位数字的随机验证码
def yzm():
    验证码 = ''
    for i in range(4):
        验证码 += str(random.randint(1,9))
    return 验证码
print(yzm())

1.5 json

json是一种兼容性很强的文件格式
json是文件的存储形式
跨语言跨平台
序列数据:机器码(底层01)
反序列数据:程序员写的看的代码
import json

json_data = json.dumps([1,2,'左手'])
print(json_data)

[1, 2, "\u5de6\u624b"] #  把中文序列化了
序列化之后它存储的是一个字符串类型

json_data = json.dumps([1,2,'左手'])
print(json_data)
print(type(json_data))
data = json.loads(json_data)  #反序列化
print(data)
print(type(data))

[1, 2, "\u5de6\u624b"]
<class 'str'>
[1, 2, '左手']
<class 'list'>

二 文件操作

操作文件步骤:

1.打开文件

2.对文件进行操作(读,写),保存

3.关闭文件

1.1 打开

菜鸟教程
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

file: 要打开文件的名字(或者说是路径)
filename = 'demo2.txt'
open(filename)

filename = 'demo2.txt'
demo = open(filename)
print(demo)

<_io.TextIOWrapper name='demo2.txt' mode='r' encoding='cp936'>

python的绝对路径快捷键:ctrl + shift +c
.. 表示上一级
相对路径:../demo/demo2.txt

在路径前面加一个r作用是规避转义
r'../demo/demo2.txt'

1.2 关闭

demo.close() 调用关闭方法close()

with open ... as 语句


filename = r'demo2.txt'
demo = open(filename)
content = demo.read()
print(content)
print(type(content))

with open(filename) as f:
    print(f.read())
# print(f.read) 报错
注意f只能在with当中使用,with结束了就自动close关闭掉了

1.3 读取

我们在调用open()来打开文件的时候可以将文件分为两类
1.纯文本文件(使用utf-8等编码编写的文本文件)
2.二进制文件(音乐、视频)
filename = r'demo3.txt'
with open(filename,encoding = 'utf-8') as f:
    content = f.read()
    print(content)
    
read有个参数,用来指定要读取的字符数量,默认值为-1就是读取文件中所有的字符
filename = r'demo3.txt'
with open(filename,encoding = 'utf-8') as f:
    content = f.read(4)
    content = f.read(4)
    print(content)
跟着上次读完的继续读4个字符

filename = r'demo3.txt'
with open(filename,encoding = 'utf-8') as f:
    content = f.read(4)
    content = f.read(4)
    content = f.read(4)
    content = f.read(4)
    print(content)
如果最后一个读完了,就会返回一个空字符串

#读取大文件的方式
with open(filename,encoding='utf-8') as f:
    #定义变量,指定每次读取的大小
    c = 3
    #创建循环读取文件内容
    while 1:
        #读取指定大小的内容
        content = f.read(c)
        #检测内容是否为空
        if content == '':
            #读取完毕,退出循环
            break
        print(content,end='')
        
或者:
#读取大文件的方式
with open(filename,encoding='utf-8') as f:
    #用空字符串来存放
    all_content = ''
    #定义变量,指定每次读取的大小
    c = 3
    #创建循环读取文件内容
    while 1:
        #读取指定大小的内容
        content = f.read(c)
        #检测内容是否为空
        if content == '':
            #读取完毕,退出循环
            break
        #用all_content拼接content
        all_content += content
        print(content,end='')
        
filename = r'demo3.txt'
with open(filename,encoding = 'utf-8') as f:
    print(f.readline()) # 读取一行内容
    print(f.readline())
    print(f.readline())
    print(f.readline())
    
filename = r'demo3.txt'
with open(filename,encoding = 'utf-8') as f:
    print(f.readlines()) # 一行一行的读取内容,一次性读完存到列表
    
filename = r'demo3.txt'
with open(filename,encoding = 'utf-8') as f:
    l = f.readlines()
    print(l[1:3])
    
['世界\n', '我是\n']

1.4 写入

write()
filename = r'demo4.txt'
with open(filename,encoding = 'utf-8')as f:
    f.write('吴彦祖宝强王博李小芳') #报错
r:只读
w:只写 ,会默认覆盖文件,如果文件不存在就会创建文件
a:表示追加
    
    filename = r'demo4.txt'
with open(filename,'w',encoding = 'utf-8')as f:
    f.write('西门庆武松番茄略略略蔡徐坤')
    
filename = r'demo4.txt'
with open(filename,'w',encoding = 'utf-8')as f:
    f.write('西门庆武松番茄略略略蔡徐坤\n')
    f.write('hello\n')
    f.write('hello\n')
    f.write('1')
    
write()也有返回值,返回值是写入字符串的长度
filename = r'demo4.txt'
with open(filename,'w',encoding = 'utf-8')as f:
    a = f.write('python')
    print(a)
    
追加
filename = r'demo4.txt'
with open(filename,'a',encoding = 'utf-8')as f:
    f.write('你好世界')
    f.write('我是左手')
    
附加功能:
+:为操作符增加功能
r+:可读可写,文件不存在会报错
w+:可写也可读
a+:可写也可读

1.5 二进制文件

所有的文本文件之外的文件统一叫做二进制文件
b 读取二进制文件
读取二进制文件你就在模式后面加个b
filename = r'C:\Users\18361\Desktop\h3R3 - 忘不掉的你.mp3'
with open(filename,'rb')as f:
    #新的文件名
    new_path = 'qq.mp3'
    with open(new_path,'ab')as new_f:
        #定义每次读取的大小
        c = 1024*100 #二进制模式,基本单位不是字符是字节,1kb=1024byte 1mb=1024kb
        while True:
            content = f.read(c)
            if not content:
                break
            #将读取到的数据写入到新对象中
            new_f.write(content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

努力学习的小初雪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值