python系列之文件操作

32 篇文章 0 订阅
6 篇文章 0 订阅
1文件基础操作

  • 1.1什么是文件

文件的种类很多以下是一些举例
在这里插入图片描述
文件的目的就是把数据存起来(持久化), 而不必每次都重新生成.


1.2文件的打开与关闭
想一想:

如果想用word编写一份简历,应该有哪些流程呢?

打开word软件,新建一个word文件
写入个人简历信息
保存文件
关闭word软件
同样,在操作文件的整体过程与使用word编写一份简历的过程是很相似的

打开文件,或者新建立一个文件
读/写数据
关闭文件


  • 1.2.1打开文件
    在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件

open(文件名,访问模式)

示例如下:

# w 写入模式  r 读取模式
f = open('123.txt', 'w')
  • 1.2.2关闭文件

    # 新建一个文件,文件名为:123.txt
    f = open('123.txt', 'w')

    # 关闭这个文件
    f.close()
  • 1.2.3自动关闭文件
with open("123.txt", "w") as f:
    pass  # 执行完缩进代码, 会自动关闭文件

访问模式					   		说明
	r			只用于读取, 默认模式。文件不存在,会报错。
	w			只用于写入。文件存在则先清空内容, 文件不存在,创建新文件。
	a			只用于写入。文件存在则追加内容, 文件不存在,创建新文件。
	r+			用于读写。文件不存在,会报错。
	w+			用于读写。文件存在则先清空内容, 文件不存在,创建新文件。
	a+			用于读写。文件存在则追加内容, 文件不存在,创建新文件。
	rb			二进制格式的只读操作。后续网络课程中具体讲解。
	wb			二进制格式的只写操作。后续网络课程中具体讲解。
	ab			二进制格式的追加操作。后续网络课程中具体讲解。

1.3with open() 基本操作

# read() 将所有的内容全部读取出来
with open('123.txt') as f:
    content = f.read()
    print(content)


# read(n)  指定读取的字符数
with open('123.txt') as f:
    content = f.read(4)
    print(content)


# readline() 每次读一行
with open('123.txt') as f:
    while True:
        content = f.readline()  # hello\n  python
        if len(content) == 0:
            break
        print(content, end="")  # print()会默认换行(会在结尾自动添加\n), 可以通过end参数手动设置结尾的内容


# readlines() 读取出所有内容  每行一个元素,返回列表
with open('123.txt') as f:
    content = f.readlines()
    print(content)

1.4文件的相关操作
有些时候,需要对文件进行重命名、删除等一些操作,python的os模块中都有这些功能

  1. 文件重命名
  2. 删除文件
  3. 创建文件夹
  4. 获取当前目录
  5. 改变默认目录
  6. 获取目录列表
  7. 删除文件夹
import os 

# 文件重命名  文件操作中都是对路径进行处理,不是对文件名进行处理
os.rename("123.txt", "666.txt")

# 文件删除
os.remove("666.txt")


# 创建文件夹
os.mkdir("demo")

# 获取当前路径  默认为项目目录
print(os.getcwd())

# 修改当前路径
os.chdir("demo")
print(os.getcwd())
os.mkdir("demo2")

# 列出目录中的内容(子文件夹和文件)
print(os.listdir())  # 默认列出当前路径

# 删除空文件夹
os.rmdir("demo")


2文件高级操作

2.1文件的偏移

# 文件读写都会导致文件定位移动(光标移动)
with open("123.txt", 'w+') as f:
    # 文件的tell方法可以查看当前定位
    print(f.tell())
    f.write("hello python")
    # 可以使用文件的seek方法 修改文件定位
    # 参数whence 0 表示移动光标到文件开头 1 表示当前位置不变 2 表示移动光标到文件末尾
    # 参数offset 基于whence设置偏移 seek(2, 0) 先移动光标到文件开头,再向右移动两个位置
    # offset只能对文件开头设置偏移 whence=1 或 2, offset只能是0
    f.seek(0, 1)
    print(f.tell())
    f.seek(0, 0)
    print(f.tell())
    content = f.read()
    print("内容为:%s" % content)

2.2 删除非空文件夹-递归实现


import os


def custem_rmdir(path):
    """
    删除非空文件夹
    :param path: 文件夹路径
    :return: None
    """
    # 判断是文件夹是否为空
    if len(os.listdir(path)):
        # 遍历其中的内容 将这些内容全部删除
        for sub_name in os.listdir(path):
            # print(sub_name)
            # 判断是文件还是文件夹
            sub_path = os.path.join(path, sub_name)
            if os.path.isfile(sub_path):  # 是文件就删除
                os.remove(sub_path)
            else:  # 是文件夹, 就递归
                custem_rmdir(sub_path)

    os.rmdir(path)


if __name__ == '__main__':
    path = 'test'
    custem_rmdir(path)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值