news 2026/7/24 3:10:50

Python 文件操作与包管理完全指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 文件操作与包管理完全指南

📢 大家好!今天我们来学习 Python 中非常重要的两个核心技能:文件操作包管理。文件操作让我们的程序能够持久化存储数据,而包管理则帮助我们更好地组织和复用代码。这篇文章将带你从零开始,全面掌握这些知识点。


📚 目录

  • 一、文件操作概述

  • 二、文件的基本操作

  • 三、文件读写详解

  • 四、文件备份案例

  • 五、OS模块实现文件操作

  • 六、Python模块

  • 七、Python包

  • 八、总结


一、文件操作概述

1.1 什么是文件

文件,在计算机领域,可以通俗地理解为存储在电脑硬盘、U盘等存储设备上的一组数据的集合

为了让你更好理解,可以把它想象成现实生活中的一个档案袋文档

内存中存放的数据在计算机关机后就会消失 要长久保存数据,就要使用硬盘、光盘、U盘等设备 为了便于数据的管理和检索,引入了"文件"的概念

1.2 为什么需要文件操作

  • 程序运行时的数据默认存在内存里,内存断电数据就消失

  • 文件保存在硬盘,可以长久保存数据

  • 文件操作让程序下一次执行时可以直接使用之前保存的数据,而不必重新制作

1.3 文件操作包含哪些内容

在日常生活中,文件操作主要包括:打开、关闭、读、写、追加等操作。

# 文件操作三步走 # ① 打开文件 → ② 读写文件 → ③ 关闭文件

二、文件的基本操作

2.1open()打开函数

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

open(name, mode, encoding=code)
参数说明
name要打开的目标文件的路径(字符串)
mode设置打开文件的模式(访问模式)
encoding文件的编码格式:gbkutf8(字符串)

2.2 文件访问模式详解

模式说明文件不存在指针位置
r只读❌ 报错开头
w写入✅ 创建开头(清空)
r+读写❌ 报错开头
w+读写(覆盖)✅ 创建开头(清空)
a追加写入✅ 创建末尾
a+读写(追加)✅ 创建末尾
# 以只读方式打开文件 f = open('python.py', 'r', encoding='utf8')

2.3close()关闭函数

# 打开文件 f = open('python.txt', 'w', encoding='utf8') # 文件写入 f.write('hello world') # 关闭文件 f.close()

2.4 写操作快速入门

# 1. 打开文件 f = open('python.txt', 'w', encoding='utf8') # 2. 文件写入 f.write('hello world') # 3. 关闭文件 f.close()

三、文件读写详解

3.1 上下文管理器(with 语句)

with是 Python 中一个上下文管理器的关键字,你可以把它理解成一个"自动打扫卫生的管家"

为什么不推荐手动 close?

  • 如果写文件时发生异常,f.close()可能根本不会执行

  • 忘记关闭文件会导致内存泄漏文件被占用等问题

with open('file.txt', 'w', encoding='utf8') as f: f.write('Hello') # 文件自动关闭,不用你操心

优点:

  • 不管代码是否报错,文件都会被正确关闭

  • 代码更简洁、更安全

  • 你再也不用担心忘记close()

3.2read()读取

# 读取指定数量的字符 with open('python.txt', 'r', encoding='utf8') as f: content = f.read(5) # 读取前5个字符 print(content) # 读取全部内容 with open('python.txt', 'r', encoding='utf8') as f: content = f.read() # 读取所有内容 print(content)

⚠️ 注意:如果读取不成功,可能是读取指针在末尾,需要使用seek(0)将指针移动到最前面。

with open('python.txt', 'w+', encoding='utf8') as f: f.write('Hello World') # f.read() # 读不到内容(指针在末尾) f.seek(0) # 将指针移动到开头 content = f.read() print(content) # 输出: Hello World

3.3readline()读取一行

# 一次读取一行内容 with open('python.txt', 'r', encoding='utf8') as f: content = f.readline() print(f'第一行:{content}') content = f.readline() print(f'第二行:{content}')

3.4readlines()读取所有行

# 一次读取所有行,返回列表 with open('python.txt', 'r', encoding='utf8') as f: content = f.readlines() # ['hello world\n', 'abcdefg\n', 'aaa\n', 'bbb\n', 'ccc'] print(content)

3.5 文件指针操作

方法作用
f.tell()获取当前文件指针位置
f.seek(0)将指针移动到文件开头
f.seek(0, 2)将指针移动到文件末尾
with open('test.txt', 'w+', encoding='utf8') as f: print(f.tell()) # 输出: 0 (开头) f.write('Hello') print(f.tell()) # 输出: 5 (末尾) f.seek(0) # 回到开头 print(f.read()) # 输出: Hello

四、文件备份案例

需求

已知当前目录下存在一个任意文件,完成对该文件的备份功能(备份文件名为xx[备份].txt)。

实现思路

  1. 读取原始文件

  2. 创建一个空的备份文件

  3. 从原始文件中把数据写入到空的备份文件中

# 使用 with 同时管理两个文件 with open('test1.txt', 'r', encoding='utf8') as f1, \ open('test1[备份].txt', 'w', encoding='utf8') as f2: data = f1.read() f2.write(data) # 退出 with 代码块后,f1 和 f2 自动关闭

五、OS模块实现文件操作

5.1 什么是 OS 模块

os 模块是 Python 标准库的一部分,它提供了丰富的功能来与操作系统进行交互。通过 os 模块,我们可以执行许多与文件和目录管理相关的操作。

import os # 使用 os 模块的相关功能 os.函数名()

5.2 文件操作

编号函数功能
1os.rename(目标文件名称, 新文件名称)对文件进行重命名操作
2os.remove(要删除文件名称)对文件进行删除操作
import os # 1. 重命名文件 os.rename('temp.txt', 'python.txt') print('✅ 已重命名为 python.txt') # 2. 删除文件 os.remove('python.txt') print('✅ 已删除 python.txt')

5.3 文件夹操作

编号函数功能
1os.mkdir(新文件夹名称)创建一个指定名称的文件夹
2os.getcwd()获取当前目录名称
3os.chdir(切换后目录名称)切换目录
4os.listdir(目标目录)获取指定目录下的文件信息,返回列表
5os.rmdir(目标目录)删除一个指定名称的"空"文件夹

案例:文件夹综合操作

import os # 1. 将当前工作目录切换到 static 文件夹 os.chdir('static') # 2. 创建 images 以及 videos 文件夹 os.mkdir('images') os.mkdir('videos') # 3. 获取目录下的所有文件 for i in os.listdir(): print(i) # 4. 移除 videos 文件夹 os.rmdir('videos')

六、Python模块

6.1 什么是模块

Python 模块,通俗来说,就是一个包含了 Python 代码的.py文件

你可以把它想象成一本使用说明书工具箱。当你需要完成某个特定任务时,不用从头开始造轮子,直接拿来这个"工具箱"就能用。

6.2 模块的导入方式

import 模块名
import 模块名 import 模块名1, 模块名2 模块名.功能名()

案例:

import time print("开始") time.sleep(1) # 让程序睡眠1秒 print("结束")
from 模块名 import 功能名
from 模块名 import 功能名 功能名()

案例:

from time import sleep print("开始") sleep(1) # 让程序睡眠1秒 print("结束")
from 模块名 import *
from 模块名 import * 功能名()

案例:

from time import * print("开始") sleep(1) print("结束")
as定义别名
# 模块别名 import 模块名 as 别名 # 功能别名 from 模块名 import 功能 as 别名

案例:

# 模块别名 import time as tt tt.sleep(2) print('HELLO') # 功能别名 from time import sleep as sl sl(2) print('HELLO')

6.3 制作自定义模块

每个 Python 文件都可以作为一个模块,模块的名字就是文件的名字。

# my_module1.py def test(a, b): print(a + b) # 在其他文件中导入使用 import my_module1 my_module1.test(10, 20) # 输出: 30

6.4__name__与测试代码

在实际开发中,开发人员会在模块中添加测试代码。但问题是,其他文件导入该模块时,测试代码也会被执行。

# my_module1.py def test(a, b): print(a + b) # 使用 __name__ 控制测试代码仅在当前文件执行 if __name__ == '__main__': test(1, 1) # 只有直接运行此文件时才执行

__name__变量:

  • 当模块被直接运行时,__name__的值为'__main__'

  • 当模块被导入时,__name__的值为模块名


七、Python包

7.1 什么是 Python 包

Python 包,通俗来说,就是一个用来存放多个模块(.py 文件)的文件夹

你可以把包想象成一个工具箱收纳箱——它把功能相似的工具(模块)整理在一起,方便查找和使用,也能避免不同功能之间的混乱。

my_package/ ├── __init__.py # 包的标识文件 ├── my_module1.py # 模块1 ├── my_module2.py # 模块2 └── my_module3.py # 模块3

7.2__init__.py的作用

这是 Python 包中最重要的标识文件

  1. 告诉 Python 解释器,这个文件夹是一个包,可以从中导入模块

  2. 可以优化导入的路径

# __init__.py 中优化导入路径 from .my_module1 import info_print1 from .my_module2 import info_print2 # 现在可以直接导入功能 from my_package import info_print1, info_print2

7.3 导入包的方式

方式1:import 包名.模块名
import my_package.my_module1 import my_package.my_module2 my_package.my_module1.info_print1() my_package.my_module2.info_print2()
方式2:from 包名 import 模块名
from my_package import my_module1, my_module2 my_module1.info_print1() my_module2.info_print2()
方式3:使用__init__.py优化(推荐)
# __init__.py from .my_module1 import info_print1 from .my_module2 import info_print2 # 直接导入功能 from my_package import info_print1, info_print2 info_print1() info_print2()

7.4 隐式包 vs 常规包

类型__init__.py特点
常规包✅ 包含可以优化导入路径,功能更强大
隐式包(命名空间包)❌ 不包含更轻量,但不能优化导入路径

八、总结

文件操作核心要点

操作函数说明
打开文件open()返回文件对象
读取文件read()readline()readlines()三种读取方式
写入文件write()写入内容
关闭文件close()释放资源
自动管理with语句自动关闭,推荐使用

文件访问模式速查

模式指针位置文件不存在
r开头
w开头(清空)
a末尾(追加)
r+开头
w+开头(清空)
a+末尾(追加)

OS 模块操作速查

分类函数功能
文件操作os.rename()重命名文件
文件操作os.remove()删除文件
目录操作os.mkdir()创建目录
目录操作os.rmdir()删除空目录
目录操作os.chdir()切换目录
目录操作os.getcwd()获取当前目录
目录操作os.listdir()列出目录内容

模块与包导入方式

方式语法使用
导入模块import 模块名模块名.功能()
导入功能from 模块 import 功能功能()
全部导入from 模块 import *功能()
模块别名import 模块 as 别名别名.功能()
功能别名from 模块 import 功能 as 别名别名()

📝最后提醒:文件操作和包管理是 Python 编程中非常重要的技能。掌握好with语句管理文件资源、os模块操作文件系统、模块和包的导入机制,你就能写出更加健壮、可维护的代码。多敲代码、多实践,自然就能熟练运用!

如果觉得有帮助,欢迎点赞、收藏、评论!😊

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/24 3:06:32

IDEA 中的 Line Separator(换行符)

IDEA 中的 Line Separator(换行符) 设置,它会影响整个项目文件的换行风格。一、这个设置是做什么的?选项换行符适用系统CRLF (\r\n)回车 换行WindowsLF (\n)换行Linux / macOS(Unix 系)CR (\r)回车旧版 Ma…

作者头像 李华
网站建设 2026/7/24 3:05:30

C++自定义异常处理体系:构建信息丰富、类型统一的错误管理方案

1. 项目概述:为什么我们需要自己的异常处理体系?在C的世界里,异常处理是一个老生常谈却又常谈常新的话题。标准库提供了std::exception这一套机制,对于很多项目来说,它足够用了。但当你真正深入到一个大型的、需要跨模…

作者头像 李华
网站建设 2026/7/24 3:05:17

uart 是什么

用最直白、最清晰的话讲:UART 是什么我用单片机 / 嵌入式最实用的方式告诉你,不绕弯子👇一句话终极结论UART 一种 “异步串行数据收发协议” 它是芯片内部的硬件模块,负责把并行数据 → 串行数据,或者反过来。2. UART…

作者头像 李华
网站建设 2026/7/24 3:05:08

Chrome-agent:基于LLM的Rust浏览器自动化工具实战指南

在自动化测试和网页数据抓取领域,传统工具如Selenium和Puppeteer虽然功能强大,但往往需要编写大量脚本代码,维护成本较高。随着大语言模型(LLM)技术的发展,自然语言驱动的浏览器自动化成为可能。Chrome-age…

作者头像 李华
网站建设 2026/7/24 3:04:23

知识图谱与RAG融合:精准问答系统技术解析

1. 知识图谱与RAG的融合价值在信息爆炸时代,如何从海量数据中快速获取精准答案成为技术攻坚的重点方向。传统知识问答系统面临两大核心痛点:一是基于纯检索的方案难以理解复杂语义关系,二是单纯依赖大语言模型容易产生事实性错误。这正是知识…

作者头像 李华