Python全栈之路:文件file常用操作

简介: Python全栈之路:文件file常用操作

目录


文件模式mode

文件模式

操作

r

以读方式打开(默认)

rU 或者 U

以读方式打开,同时提供通用换行符支持

w

以写方式打开,必要时清空

a

以追加模式打开,从EOF开始,必要时创建新的文件

r+

以读写方式打开

w+

以读写模式打开
a+ 以读写模式打开

rb

以二进制读模式打开
wb

以二进制写模式打开

ab

以二进制追加模式打开
rb+ 以二进制读写模式打开

wb+

以二进制读写模式打开

ab+

以二进制读写模式打开

文件方法method

文件对象方法

操作

file.close()

关闭文件

file.fileno()

文件描述符

file.flush()

刷新文件的内部缓冲区

file.isatty()

判断file是否是一个类tty设备

file.next() 返回文件的下一行类似于file.readline()

file.read()

从文件读取size个字节,当未给定或给定负值的时候,读取剩余的所有字节,饭后作为字符串返回

file.readinto(buf,size) 读取size个字节到文件缓冲器中
file.readline(size) 从文件中读取并返回一行(包括行结束符),或返回最大size个字符

file.readlines(sizhint=0)

读取文件的所有行并作为一个列表返回(包含所有行的结束符);如果给定了sizhint且大于0,那么将返回总和大约为sizhit字节的行(大小由缓冲器容量的下一个值决定)(比如说缓冲器的大小只能为4K的倍数,如果sizhint的值为15k则返回的可能是16k)

file.seek(off,whence=0)

在文件中移动文件指针,从whence(0代表文件开始,1代表当前位置,2代表文件末尾)偏移off字节
file.tell()

返回当前文件中的位置

file.truncate(size=file.tell())

截取文件到最大size字节,默认为当前文件位置

file.write()

向文件写入字符串

file.writelines()

向文件写入字符串序列seq

文件属性property

文件对象属性

操作

file.closed

表示文件已经被关闭,否则为False
file.encoding

文件编码

file.mode 打开模式
file.name 文件名

file.newlines

表示文件所采用的分隔符

file.softspace

为0表示在输出一数据后,要再加上一个空格符,为1表示不加,这个属性一般用不到

实例演示

文件操作:打开-操作-关闭


模式mode:

  • 文本
  • r只读(默认)
  • w只写(创建新文件,存在则删除,不存在则新建)
  • a追加(不存在则创建,存在则追加)
  • “+”表示可以同时读写某个文件
  • r+读写(追加写,常用此项),w+写读(追加写),a+追加读(同a)
  • “b”二进制文件(没有encoding参数,网络传输,图片,声音,视频)
  • rb只读,rw只写,ra追加,rb+读写,rw+读写,ra+读写
  • “U”表示读取时,\r,\n,\r\n自动换成\n
  • rU只读


只读(默认)

"""春宫曲.txt
春宫曲
唐代:王昌龄
昨夜风开露井桃,未央前殿月轮高。
平阳歌舞新承宠,帘外春寒赐锦袍。
"""
f = open("春宫曲.txt", encoding="utf-8")  # 文件句柄
print(f.read())  # 读取全部内容
f.close()
"""
报错:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 4: 
illegal multibyte sequence
设置:encoding="utf-8"
"""

只写,原来的内容被清空

f = open("春宫曲.txt", "w", encoding="utf-8")  # 指定编码
poetry = """春宫曲
唐代:王昌龄
昨夜风开露井桃,未央前殿月轮高。
平阳歌舞新承宠,帘外春寒赐锦袍。
"""
f.write(poetry)  # 写入
f.close()

追加

f = open("春宫曲.txt", "a", encoding="utf-8")
f.write("好诗好诗!")  # 在文件末尾追加写入
f.close()

读写文件

f = open("春宫曲.txt", "r+", encoding="utf-8")
#  只适合读取小文件,会转为列表(low loop,不推荐)
for index, line in enumerate(f.readlines()):
    if index == 1:  # 不打印文件第二行
        print("我是分割线".center(30, "*"))
        continue
    print(line.strip())  # 去除两侧空格和换行
f.write("写入内容,不会报错!")
f.close()

读写文件

f = open("春宫曲.txt", "r+", encoding="utf-8")
# high biger,推荐
count = 0  # 计数器
for line in f:  # f是一个迭代器
    count += 1
    if count == 2:  # 如果是第二行
        print("--------")
        continue
    print(line.strip())
f.close()

文件对象方法和属性

f = open("春宫曲.txt", "r+", encoding="utf-8")
print(f.tell())  # 文件指针位置 ->0
print(f.readline())  # ->春宫曲
print(f.tell())  # ->11
f.seek(0)  # 将文件指针移到文件首
print(f.tell())  # ->0
print(f.readline())  # ->春宫曲
print(f.fileno())  # 文件的描述符 ->3
print(type(f))  # -><class '_io.TextIOWrapper'>
print(f.name)  # 文件名 ->春宫曲.txt
print(f.mode)  # 打开模式 ->r+
print(f.closed)  # 是否关闭 ->False
print(f.encoding)  # 文件编码 ->utf-8
print(f.buffer)  # -><_io.BufferedRandom name='春宫曲.txt'>
print(type(f.newlines),f.newlines.encode("utf-8"))  # 文件换行符
# -><class 'str'> b'\r\n'
print(f.isatty())  # 检测文件是否连接到一个终端设备 ->False
f.truncate(10)  # 截断
f.flush()  # 将缓存内容刷入硬盘
# f.write("在增加点内容吧")
f.close()

二进制读写

f = open("春宫曲.txt", "rb+")  # 二进制读写的时候,不能指定编码
print(f.read())  # ->b'\xe6\x98\xa5\xe5\xae\xab\xe6\x9b\xb2\r'
f.write("我爱北京天安门".encode("utf-8"))  # 字符串转为字节再写入
f.close()

小知识

windows命令行下,切换盘符

C:\>d:
相关文章
|
2月前
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
|
2月前
|
编译器 Python
如何利用Python批量重命名文件
本文介绍了如何使用Python和PyCharm对文件进行批量重命名,包括文件名前后互换、按特定字符调整顺序等实用技巧,并提供了完整代码示例。同时推荐了第三方工具Bulk Rename Utility,便于无需编程实现高效重命名。适用于需要处理大量文件命名的场景,提升工作效率。
|
3月前
|
编解码 Prometheus Java
当Python同时操作1000个文件时,为什么你的CPU只用了10%?
本文介绍如何构建一个高效的文件处理系统,解决单线程效率低、多线程易崩溃的矛盾。通过异步队列与多线程池结合,实现任务调度优化,提升I/O密集型操作的性能。
65 4
|
3月前
|
Linux 数据库 数据安全/隐私保护
Python web Django快速入门手册全栈版,共2590字,短小精悍
本教程涵盖Django从安装到数据库模型创建的全流程。第一章介绍Windows、Linux及macOS下虚拟环境搭建与Django安装验证;第二章讲解项目创建、迁移与运行;第三章演示应用APP创建及项目汉化;第四章说明超级用户创建与后台登录;第五章深入数据库模型设计,包括类与表的对应关系及模型创建步骤。内容精炼实用,适合快速入门Django全栈开发。
100 1
|
3月前
|
人工智能 索引 Python
[oeasy]python094_使用python控制音符列表_midi_文件制作
本文介绍了如何使用Python控制音符列表制作MIDI文件。首先回顾了列表下标索引(正数和负数)的用法,接着通过`mido`库实现MIDI文件生成。以《两只老虎》为例,详细解析了代码逻辑:定义音高映射、构建旋律列表、创建MIDI文件框架,并将音符插入音轨。还探讨了音符时值与八度扩展的实现方法。最终生成的MIDI文件可通过不同平台播放或编辑。总结中提到,此技术可用于随机生成符合调性的旋律,同时引发对列表其他实际应用的思考。
91 5
|
2月前
|
数据采集 监控 算法
Python文件与目录比较全攻略:从基础操作到性能优化
文件比较的核心在于数据指纹校验,通过逐字节比对生成唯一标识,确保内容一致性。从标准库的os与filecmp到高性能第三方库如pydiffx,再到分布式与量子加密技术的未来趋势,文件比较广泛应用于数据备份、代码审查与系统监控等领域,是保障数据完整性的关键技术手段。
74 0
|
4月前
|
数据采集 自然语言处理 Java
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
本文以反面教材形式,剖析了在使用 Playwright 爬取懂车帝车友圈问答数据时常见的配置错误(如未设置代理、Cookie 和 User-Agent),并提供了 Python、Java 和 .NET 三种语言的修复代码示例。通过错误示例 → 问题剖析 → 修复过程 → 总结教训的完整流程,帮助读者掌握如何正确配置爬虫代理及其它必要参数,避免 IP 封禁和反爬检测,实现高效数据采集与分析。
198 3
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
|
5月前
|
Python
使用Python实现multipart/form-data文件接收的http服务器
至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
251 69
|
3月前
|
数据采集 存储 API
Python爬虫结合API接口批量获取PDF文件
Python爬虫结合API接口批量获取PDF文件
|
3月前
|
数据采集 运维 BI
Python 文件操作进阶|使用 shutil 实现高效文件复制
在开发和运维中,处理大量文件是常见需求,如备份配置、归档日志或构建部署包。手动复制粘贴已无法满足高效需求!Python 的 `shutil` 模块提供了强大的文件操作功能,支持单文件复制、目录树迁移及自动化任务构建。本文详解 `shutil.copy()` 基础用法与进阶技巧,如批量复制、自动路径检测、时间戳命名备份等,助你实现高效自动化。结合实战案例(如自动备份系统),让你的代码更专业!学习后,欢迎交流心得,一起精进 Python 技能。关注我,获取更多编程技巧与源码分享!

推荐镜像

更多