【Python】第十六部分 文件读写操作

本文详细介绍了Python中文件读写的基本操作,包括常用打开模式、文件读取、写入、with语句的使用,以及os和os.path模块的功能,通过实例演示了文件遍历和路径处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【Python】第十六部分 文件读写操作



16. 文件读写操作

16.1 常用文件打开模式

# 打开文件 open(文件名,文件打开模式)
# r : 只读模式
file = open('a.txt', 'r')
print(file.read())

# w : 写模式 会覆盖之前所写的全部内容,如果文件不存在则创建,反之不创建
file = open('a.txt', 'w')
print(file.write('hello!'))

# a : 追加模式 如果文件存在则追加到末尾,如果不存在则创建新文件
file = open('a.txt', 'a')
print(file.write('我是追加的数据'))

# + :必须配合 a 才可以使用 a+ : 表示以读写的模式
file = open('a.txt', 'a+')
print(file.write('我是追加的数据'))

# b : 以二进制的模式打开文件,必须配合 rb,wb才可以使用
origin = open('hudie.png', 'rb')  # 以二进制进行读取
open('copyhudie.png', 'wb').write(origin.read())  # 以二进制进行写入

# 最后记得关闭
file.close()
origin.close()

16.2 读取文件

f = open('file.txt', 'r', encoding='utf-8')
# 读取全部的内容
f.read()

# 读取全部行,封装到列表中
f.readlines()

# 读取一行,可以多次调用读取多行
f.readline()

# 文件关闭操作
f.close()


16.3 写入文件

f = open('file.txt', 'w', encoding='utf-8')
# 这一步只是将我们的内容写入到内存中
f.write('\nhello world!')
# flush刷新 将内存中积攒的内容写入到硬盘文件中
f.flush()
# close方法其实是内置了flush功能的
f.close() 

16.4 with 语句

作用: with语句可以自动管理上下文资源,不论什么原因跳出with语句都能够保证文件的正常关闭,以此来达到释放资源的目的,这样就不用写 file.close()

with open('hudie.png', 'rb') as origin:
    with open('copyhudie.png', 'wb') as copy_file:
        copy_file.write(origin.read())

16.5 os模块

# os模块 它是与操作系统相关的模块
import os
# 获取当前的工作目录
file = os.getcwd()
print(file)  # E:\PythonProject

# 改变当前的工作目录
os.chdir('E:\Test')

# 创建目录
os.mkdir('Test')

# 创建多层目录
os.makedirs('Test/hello/world')

# 删除目录
os.rmdir('Test')

# 删除多层目录
os.removedirs('Test/hello/world')

# 查看指定路径下的文件和目录
print(os.listdir('./venv'))
print(os.scandir('./venv'))

# 删除文件
os.remove('test.py')

# 重命名文件
os.rename('oldname', 'newname')

# 打开记事本
os.system('notepad.exe')

# 打开计算器
os.system('calc.exe')

# 打开指定软件
os.startfile('C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe')

16.6 文件的遍历

import os

# 遍历文件或者目录
listfile = os.listdir('../learn')
for file in listfile:
    # 将路径和文件进行拼接
    print(os.path.join(os.getcwd(), file))
import os

filelist = os.scandir('../learn')

for file in filelist:
    # 和os.listdir()不同的是:遍历的每一项都是对象
    print(os.path.join(os.getcwd(), file.name))

拓展

import os
from datetime import datetime

filelist = os.scandir('../learn')

for file in filelist:
    # stat可以拿到文件的详细信息
    print(file.stat())
    # 获取文件的创建时间
    print(datetime.fromtimestamp(file.stat().st_ctime))

16.7 os.path模块

import os.path

# 获取文件的绝对路径
print(os.path.abspath('a.txt'))  # E:\PythonProject\a.txt

# 判断文件是否存在
print(os.path.exists('a.txt'), os.path.exists('b.txt'))  # True False

# 分离文件路径和文件名
print(os.path.split('E:\\PythonProject\\a.txt'))
# ('E:\\PythonProject', 'a.txt')

# 分离文件名和扩展名
print(os.path.splitext('a.txt'))
# ('a', '.txt')

# 将目录和文件名进行拼接
print(os.path.join('E:\\new\\', 'b.txt'))
# E:\new\b.txt

# 获取文件基本路径
print(os.path.dirname('E:\\PythonProject\\hello\\world\\a.txt'))
# E:\PythonProject\hello\world

# 获取文件名
print(os.path.basename('E:\\PythonProject\\hello\\world\\a.txt'))
# a.txt

# 判断是否为目录(文件夹)
print(os.path.isdir('E:\\PythonProject\\hello\\world\\a.txt'))  # False

# 判断是否为文件
print(os.path.isfile('E:\\PythonProject\\hello\\world\\a.txt'))  # True

16.8 案例

# 案例  获取目录下后缀名为 .py
import os

path = os.getcwd()
listFile = os.listdir(path)

for item in listFile:
    if item.endswith('.py'):
        priath,fileItem)) 
# 获取指定目录下的文件路径
import os

path = os.getcwd()
listFile = os.walk(path)  # 得到的是一个对象
# 遍历
for dirpath, dirname, filename in listFile:
    ''' 
        dirpath 当前路径
        dirname 当前路径下目录
        filename 当前路径下的文件
    '''
    for dirItem in dirname:
        print(os.path.join(dirpath, dirItem))

    for fileItem in filename:
        print(os.path.join(dirpath,fileItem)) 

总结

以上就是今天要讲的内容,希望对大家有所帮助!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值