第9章 读写文件

目录

  • [1. 文件与文件路径](#1. 文件与文件路径)
    • [1.1 生成文件路径](#1.1 生成文件路径)
    • [1.2 当前工作目录(.cwd())](#1.2 当前工作目录(.cwd()))
    • [1.3 主目录(.home())](#1.3 主目录(.home()))
    • [1.4 用 os.makedirs() 创建新文件夹](#1.4 用 os.makedirs() 创建新文件夹)
    • [1.5 处理绝对路径和相对路径](#1.5 处理绝对路径和相对路径)
    • [1.6 取得文件路径的各部分](#1.6 取得文件路径的各部分)
    • [1.7 查看文件大小和文件夹内容](#1.7 查看文件大小和文件夹内容)
    • [1.8 使用通配符模式修改文件列表](#1.8 使用通配符模式修改文件列表)
    • [1.9 检查路径的有效性](#1.9 检查路径的有效性)
  • [2. 文件读写过程](#2. 文件读写过程)
    • [2.1 用 open() 函数打开文件](#2.1 用 open() 函数打开文件)
    • [2.2 读取文件内容](#2.2 读取文件内容)
    • [2.3 写入文件](#2.3 写入文件)
  • [3. 用 shelve 模块保存变量](#3. 用 shelve 模块保存变量)

1. 文件与文件路径

1.1 生成文件路径

python 复制代码
from pathlib import Path

myFiles = ["C++", "Java", "Python"]

for filename in myFiles:
    print(Path("D:\\Study", filename))

1.2 当前工作目录(.cwd())

python 复制代码
from pathlib import Path

print(Path.cwd())

1.3 主目录(.home())

python 复制代码
from pathlib import Path

print(Path.home())

1.4 用 os.makedirs() 创建新文件夹

  • 创建目录下的所有文件夹
python 复制代码
import os

os.makedirs(".\\ABC\\abc")
  • 只能创建一个文件夹
python 复制代码
from pathlib import Path

Path(".\\ABC").mkdir()

1.5 处理绝对路径和相对路径

  • is_absolute():判断是否为绝对路径
python 复制代码
from pathlib import Path

file = Path.cwd()
print(file)
print(file.is_absolute())
  • os.path 模块
    • abspath() :获取绝对路径
    • isabs() :判断是否为绝对路径
    • relpath() :获取后方文件到前方文件的相对路径,后方文件默认为当前工作目录
python 复制代码
import os.path

file = "..\\"
print(os.path.abspath(file))
print(os.path.isabs(file))
print(os.path.relpath("D:\\Study\\Java", "D:\\Study\\C++"))

1.6 取得文件路径的各部分

  • 锚点(anchor):文件系统的根文件夹
  • 驱动器(drive):物理硬盘驱动器或其他存储设备
  • 父文件夹(parent):包含该文件的文件夹
  • 文件名(name)
    • 主干名(stem)
    • 后缀名(suffix)
python 复制代码
from pathlib import Path

file = Path(Path.cwd(), "test.py")
print(file.anchor)
print(file.drive)
print(file.parent)
print(file.name)
print(file.stem)
print(file.suffix)

1.7 查看文件大小和文件夹内容

python 复制代码
import os.path
from pathlib import Path

print(os.path.getsize(Path(Path.cwd(), "test.py")))
print(os.listdir(Path.cwd()))

1.8 使用通配符模式修改文件列表

python 复制代码
from pathlib import Path

file = Path.cwd()
print(list(file.glob("*.py")))

1.9 检查路径的有效性

  • exists() :判断路径是否存在
  • is_file() :判断路径是否存在,且是否为一个文件
  • is_dir() :判断路径是否存在,且是否为一个文件夹
python 复制代码
from pathlib import Path

file = Path.cwd()
print(file.exists())
print(file.is_file())
print(file.is_dir())

2. 文件读写过程

2.1 用 open() 函数打开文件

python 复制代码
open("messages.txt")

2.2 读取文件内容

  • read() :将全部内容输出
  • readlines() :按行保存在数组中(保留换行字符)
python 复制代码
message = open("messages.txt")
print(message.read())
print(message.readlines())
message.close()

2.3 写入文件

  • open()的模式设置
    • "r":只读(默认)
    • "w":只写
    • "a":附加
    • "r+":读写
python 复制代码
message = open("messages.txt", "w")
# 以写模式打开
message.write("123")
# 写入内容
message = open("messages.txt")
print(message.read())
message.close()

3. 用 shelve 模块保存变量

  • 将变量保存在二进制的shelf文件中
    • shelf文件与字典相似,以键值对形式存储数据
python 复制代码
import shelve

file = shelve.open("mydata")
items = ["A", "B", "C", "D", "E", "F"]
file['items'] = items
file.close()

file = shelve.open("mydata")
print(list(file.keys()))
print(list(file.values()))
print(file["items"])
file.close()
相关推荐
IT北辰37 分钟前
用 Python 实现连续数据分组求和并回写
开发语言·python
小白学大数据1 小时前
从携程爬取的杭州酒店数据中提取价格、评分与评论的关键信息
爬虫·python·性能优化
IT学长编程1 小时前
计算机毕业设计 基于Python的热门游戏推荐系统的设计与实现 Django 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
大数据·python·django·毕业设计·课程设计·毕业论文
Ashlee_code2 小时前
什么是TRS收益互换与场外个股期权:从金融逻辑到系统开发实践
大数据·人工智能·python·金融·系统架构·清算·柜台
今天没有盐2 小时前
Python编程实战:日期处理与数学算法综合练习
python·pycharm·编程语言
宸津-代码粉碎机3 小时前
Java内部类内存泄露深度解析:原理、场景与根治方案(附GC引用链分析)
java·开发语言·jvm·人工智能·python
weixin_307779133 小时前
Python编码规范之字符串规范修复程序详解
开发语言·python·代码规范
爬台阶的蚂蚁3 小时前
使用 UV 工具管理 Python 项目的常用命令
python·uv
郝学胜-神的一滴3 小时前
深入理解 Python 的 __init_subclass__ 方法:自定义类行为的新方式 (Effective Python 第48条)
开发语言·python·程序人生·个人开发
王景程3 小时前
让IOT版说话
后端·python·flask