Python入门学习(十一)Python的IO操作

Python入门

Python开发工具的使用:Pycharm的配置使用


第一章:Python入门学习(一)Print函数、Input函数、基本数据类型、运算符、流程控制语句、循环语句
第二章:Python入门学习(二) 列表的增删改查
第三章:Python入门学习(三) 字典的增删改查
第四章:Python入门学习(四)元组与集合
第五章:Python入门学习(五)字符串的操作
第六章:Python入门学习(六)函数学习
第七章:Python入门学习(七)Python异常处理机制
第八章:Python入门学习(八)Python中的类和对象
第九章:Python入门学习(九)Python面向对象的三大特征封装、继承和多态
第十章:Python入门学习(十)Python模块化编程
第十一章:Python入门学习(十一)Python的IO操作


第十二章:Python进阶学习(一)_学生信息管理系统项目


代码仓库地址:Python入门项目

编码格式

常见的编码格式:
Python的解释器使用的是Unicode(内存)
py文件在磁盘上使用的是UTF-8(外存)
在这里插入图片描述

文件的读写原理

文件的读写俗称IO操作
在这里插入图片描述

文件的读写操作

使用内置函数open()创建文件对象
在这里插入图片描述

语法规则

在这里插入图片描述

常用的文件打开模式

文件的类型:
按文件中的数据的组织形式,文件分为以下两大类

  1. 文本文件:存储的是普通字符文本,默认为unicode字符集,可以使用记事本程序打开
  2. 二进制文件: 把数据内容用字节进行存储,无法用记事本打开,必须使用专用的软件打开,比如:mp3文件、jpg文件、doc文件等。

在这里插入图片描述

读取文件

创建1.txt文件
在这里插入图片描述
使用open()函数获得文件对象

# author: LiuShihao
# data: 2020/12/1 12:22 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc:
file = open('1.txt','r')
print(file.readlines())  # 结果是一个列表
file.close()

在这里插入图片描述

写入文件

# 写入文件   w:文件如果不存在则创建,存在则覆盖,文件指针在文件的开头
file2 = open('2.txt','w')
file2.write('HelloWorld')
file2.close()

在这里插入图片描述
在这里插入图片描述

file2 = open('2.txt','w')
file2.write('HelloPython')
file2.close()

将原来文件中的内容覆盖
在这里插入图片描述

追加

之前的2.txt文件
在这里插入图片描述

file2 = open('2.txt','a')
file2.write('HelloPython')
file2.close()

之后的2.txt文件
在这里插入图片描述

二进制文件 复制图片

# author: LiuShihao
# data: 2020/12/1 12:36 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc:
src_file = open('3.png','rb')    # 读取二进制文件
target_file = open('3_copy.png','wb')# 写入二进制文件
# 边读边写
target_file.write(src_file.read())
print("复制结束")
# 关闭
src_file.close()
target_file.close()

在这里插入图片描述

文件对象的常用方法

在这里插入图片描述

file = open('1.txt','r')
#print(file.read())   #读取文件的全部内容
# print(file.read(2))   # 读取文件两个字符
# print(file.readline())  # 读取一行数据
# print(file.readlines()) # 将文件中的每一行作为一个对象  放入列表返回
print("指针的当前位置:",file.tell())
file.seek(3)  # 跳过三个字节
print(file.read())
print("指针的当前位置:",file.tell()) # 返回指针的当前位置
file.flush()# 刷新文件缓冲区的内容
file.close()# 释放文件资源
file = open('1.txt','a')
# file.write('Hello')
# 写入列表
lst = ['Java','Python',"Go"]
file.writelines(lst)
file.close()

with语句(上下文管理器)

with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,以此来达到释放资源的目的

在这里插入图片描述

# author: LiuShihao
# data: 2020/12/1 4:14 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc:创建 MyContentMgr类
"""
MyContentMgr实现了特殊方法__enter__()、__exit__()成为该类对象遵守了上下文管理器协议
该类对象的实例对象成为上下文管理器
"""
class MyContentMgr:
    def __enter__(self):
        print("__enter__方法被调用")
        return self
    def __exit__(self, exc_type, exc_val, exc_tb):
        print("__exit__方法被调用了")
    def show(self):
        print("show方法执行了")
with MyContentMgr() as file:  # 相当于file = MyContentMgr()
    file.show()

在这里插入图片描述
在这里插入图片描述

使用with语句完成图片文件的复制

with open('3.png','rb') as file:
    with open('4_copy.png','wb') as target_file:
        target_file.write(file.read())
        print("拷贝结束")

目录操作

os模块是Python内置的雨操作系统功能和文件系统功能相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样。
os模块os.path模块用于对目录或文件进行操作

os模块操作目录相关函rr

在这里插入图片描述

# author: LiuShihao
# data: 2020/12/1 4:43 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc:os模块与操作系统相关的一个模块

import os
# 直接调用可执行文件
# 计算器
#os.system('/System/Applications/Calculator.app/Contents/MacOS/Calculator')
# 打开QQ
# os.system('/Applications/QQ.app/Contents/MacOS/QQ')
# 获返回当前的工作目录
print(os.getcwd())
# 返回指定目录下的文件和目录信息
#print(os.listdir('/Users/LiuShihao/Desktop/Python3'))
# 创建目录
#os.mkdir('/Users/LiuShihao/Desktop/Python3/2.txt')
#print(os.listdir('/Users/LiuShihao/Desktop/Python3'))
# 删除目录
# os.rmdir('/Users/LiuShihao/Desktop/Python3/2.txt')
# print(os.listdir('/Users/LiuShihao/Desktop/Python3'))
# 创建多级目录
# os.makedirs('A/B/C')
# 删除多级目录
#os.removedirs('A/B/C')
# 将Path设置为当前的工作目录
os.chdir('/Users/LiuShihao/PycharmProjects/pythonProject/first/modules')
print(os.getcwd())
os.chdir('/Users/LiuShihao/PycharmProjects/pythonProject/first/io')
print(os.getcwd())

os.path模块操作目录相关函数

在这里插入图片描述

# author: LiuShihao
# data: 2020/12/1 5:01 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc: os.path模块操作目录相关函数
import os.path
# 获得文件的绝对路径
print(os.path.abspath('demo8.py'))
# 判断文件是否存在
print(os.path.exists('demo8.py'),os.path.exists('demo88.py'))
# 目录拼接
print(os.path.join('/Users/','Python3'))
# 分离文件名和目录
print(os.path.split('/Users/LiuShihao/PycharmProjects/pythonProject/first/io/demo8.py'))
# 分离文件名和文件扩展名
print(os.path.splitext('demo8.py'))
# 从一个目录中提取文件名
print(os.path.basename('/Users/LiuShihao/PycharmProjects/pythonProject/first/io/demo8.py'))
# 从一个路径中提取文件路径,不包括文件名
print(os.path.dirname('/Users/LiuShihao/PycharmProjects/pythonProject/first/io/demo8.py'))
# 判断是否为路径
print(os.path.isdir('/Users/LiuShihao/PycharmProjects/pythonProject/first/io/demo8.py'))

练习

要求:列出指定目录下的所有py文件

# author: LiuShihao
# data: 2020/12/1 5:09 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc: 要求:列出指定目录下的所有py文件
import os
path = os.getcwd()
lst = os.listdir(path)
for filename in lst:
    if filename.endswith('py'): # 获取以.py文件结尾的文件
        print(filename)


递归获得文件夹下的所有文件

# author: LiuShihao
# data: 2020/12/1 5:12 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc:
import os
path = os.getcwd()
list_files = os.walk(path)
for dirpath,dirname,filename in list_files:
    """print(dirpath)
    print(dirname)
    print(filename)
    print("--------------------")"""
    for dir in dirname:
        print(os.path.join(dirpath,dir))
    print("--------------------")
    for file in filename:
        print(os.path.join(dirpath, file))

总结

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Liu_Shihao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值