读取和写入文件等操作是 Python 可以完成的最常见任务之一。无论是写入简单的文本文件,读取复杂的服务器日志,甚至分析原始字节数据,进行相关的处理操作,最终所有这些情况都需要读取或写入文件。

整套学习自学教程中应用的数据都是《三國志》、《真·三國無雙》系列游戏中的内容。

文章目录

  • 文件的基本概念
    • 文件路径
    • 行尾
    • 字符编码
  • 在 Python 中打开和关闭文件
    • 文本文件类型
    • 缓冲的二进制文件类型
    • 原始文件类型
  • 读写打开的文件
    • 遍历文件中的每一行
    • 字节操作

文件的基本概念

文件是一组用于存储数据的连续字节。这些数据以特定格式组织,可以是文本文件等简单的文件,也可以是可执行程序等复杂的文件。这些字节文件然后被翻译成二进制文件1,0 便于计算机进行处理。

文件包含三个部分:

  1. Header: 关于文件内容的元数据(文件名、大小、类型等)。
  2. Data: 由创建者或编辑者编写的文件内容。
  3. EOF: 表示文件结束的特殊字符。


数据表示的内容取决于所使用的格式规范通常由扩展名表示。例如扩展名为.jpg最有可能符合图形交换格式规范的文件但未必是图片文件。

扩展名有数百甚至数千个文件扩展名。这里介绍 .txt 和 .csv 扩展名。

文件路径

访问文件需要文件路径,文件路径由字符串组成。其中包括三个部分:

  1. 文件夹路径: 文件系统上的文件夹位置,后续文件夹由正斜杠 / (Unix) 或反斜杠 \ (Windows) 分隔。
  2. 文件名: 文件的实际名称。
  3. 扩展名: 文件路径的末尾以句点 ( .) 开头,用于指示文件类型。


行尾

行尾可以追溯到摩尔斯电码时代,当时使用特定的前符号来传达传输的结束或行的结束。

Windows 使用 CR+LF 字符来表示新行,而 Unix 和较新的 Mac 版本仅使用LF字符。这些符号都是不可见,但是可以操作。

# windows
Hello World\r\n
Dynasty Warriors\r\n

字符编码

未来还会面临的一个字符数据编码的问题。两种最常见的编码是ASCII和UNICODE格式。

  • ASCII 只能存储 128 个字符。
  • Unicode 最多可以包含 1,114,112 个字符。

在 Python 中打开和关闭文件

调用 open() 内置函数来完成,其中包含一个文件路径的文件关键参数。

file = open('data.txt')

调用 .close() 对打开的文件进行关闭。

file.close()

可以调用 with语句 在执行打开操作模块后自动进行关闭。

with open('data.txt', 'r') as f:.......

读写参数说明。

关键字 说明
‘r’ 打开阅读(默认)
‘w’ 打开写入,首先截断文件
‘a’ 打开写入,如果存在则附加到文件的末尾
‘b’ 二进制模式
‘t’ 文本模式(默认)
‘+’ 打开磁盘文件进行更新(读写)
‘U’ 通用换行模式(为了向后兼容;不应在新代码中使用)

读写参数组合。

模式 描述
rt 读取文本,默认模式
rb 读取二进制数据
wt 写入文本
wb 写入二进制
r+ 不清空原文件,读写
w+ 清空原文件,并读写
a+ 在文件末尾读写

文本文件类型

文本文件是您会遇到的最常见的文件。

# 打开方式举例
open('data.txt')
open('data.txt', 'r')
open('data.txt', 'w')type(file)
<class '_io.TextIOWrapper'>

缓冲的二进制文件类型

# 打开方式举例
file = open('abc.txt', 'rb') # 读
type(file)
<class '_io.BufferedReader'>
file = open('abc.txt', 'wb') # 写
type(file)
<class '_io.BufferedWriter'>

原始文件类型

file = open('abc.txt', 'rb', buffering=0)
type(file)
<class '_io.FileIO'>

读写打开的文件

读取文件可以调用的方法。

# size这最多从该行中读取多个字符。这一直持续到行尾,然后回绕。如果没有传递或传递参数None,-1则读取整行(或该行的其余部分)。
.readline(size=-1)
# 这将从文件对象中读取剩余的行并将它们作为列表返回。
.readlines()

.read(size=-1),size字节数从文件中读取。如果没有传递或传递参数None,-1则读取整个文件。

with open('data.txt', 'r') as f:print(f.read())
data data data
data data data
data data data

.readline(size=-1),从该行中读取多个字符。这一直持续到行尾,然后回绕。如果没有传递或传递参数None,-1则读取整行(或该行的其余部分)。

with open('data.txt', 'r') as f:print(f.readline(2))
data data data
data data data

.readlines(),这将从文件对象中读取剩余的行并将它们作为列表返回。

with open('data.txt', 'r') as f:print(f.readlines())
data data data
data data data
data data data

遍历文件中的每一行

.readline() 方法每次遍历一行。

with open('data.txt', 'r') as f:line = f.readline()while line != '':print(line, end='')line = f.readline()
data data data
data data data
data data data

.readlines() 方法返回一个列表,其中列表中的每个元素代表文件中的一行。

with open('data.txt', 'r') as f:for line in f.readlines():print(line, end='')
data data data
data data data
data data data# 或者简化操作
with open('data.txt', 'r') as f:for line in f:print(line, end='')
data data data
data data data
data data data

文件的读写是相对的,方法和读取一样。

with open('data.txt', 'r') as f:lines = f.readlines()f.write(lines)

字节操作

使用字节字符串处理文件。这是通过将 ‘b’ 字符添加到参数来完成的。

with open('data.jpg', 'rb') as f:print(f.readline())
b'\x89'
b'JPG'
b'\r\n'
b'\x1a'
b'\n'

Python基础必掌握的文件读写操作详解相关推荐

  1. IOS 文件读写操作详解及简单实例

    iPhone 文件读写操作 1,写文件操作 - (IBAction)btnWrite:(id)sender {//创建文件管理器NSFileManager *fileManager = [NSFile ...

  2. python怎么读write_Python如何读写文件?python写入文件读写操作详解

    Python文件的打开或创建可以使用函数open().该函数可以指定处理模式,设置打开的文件为只读.只写或可读写状态.open()的声明如下所示. open(file, mode='r', buffe ...

  3. C语言文件读写操作详解

    C语言/C++中文帮助文档免积分下载(点击跳转) 当文件按指定的工作方式打开以后,就可以执行对文件的读和写.下面按文件的性质分类进行操作.针对文本文件和二进制文件的不同性质,对文本文件来说,可按字符读 ...

  4. JSON文件读写操作详解

    目录 JSON介绍 JSON基本语法 数据 对象 数组 JSON文件写入 JSON文件读取 JSON介绍 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量 ...

  5. Python 文件 IO 操作详解

    Python 文件 IO 操作详解 1.文件 IO 常用操作 2.文件打开操作 2.1 打开命令 2.2 命令参数 2.2.1 路径 2.2.2 mode 2.2.3 buffering 缓冲区 2. ...

  6. python可以处理多大的数据_科多大数据之Python基础教程之Excel处理库openpyxl详解...

    原标题:科多大数据之Python基础教程之Excel处理库openpyxl详解 科多大数据小课堂来啦~Python基础教程之Excel处理库openpyxl详解 openpyxl是一个第三方库,可以处 ...

  7. python的excell库_扣丁学堂Python基础教程之Excel处理库openpyxl详解

    扣丁学堂Python基础教程之Excel处理库openpyxl详解 2018-05-04 09:49:49 3197浏览 openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pipi ...

  8. C++文本文件读写操作详解

    C++文本文件读写操作详解 前面章节中,已经给大家介绍了文件流对象如何调用 open() 方法打开文件,并且在读写(又称 I/O )文件操作结束后,应调用 close() 方法关闭先前打开的文件.那么 ...

  9. java io类库,Java利用io类库对各种文件的操作详解

    Java中文网 - Java利用io类库对各种文件的操作详解 java中提供了io类库,可以轻松的用java实现对文件的各种操作.下面就来说一下如何用java来实现这些操作. 新建目录 //Strin ...

最新文章

  1. vsftp和nfs服务
  2. HBase概念学习(八)开发一个类twitter系统之表设计
  3. redhat5.8+heartbeat+web+nfs(提供软件包)
  4. live联系人导出到CSV乱码
  5. opengl加载显示3D模型MDC类型文件
  6. halcon测试一张图片是否过曝或过暗
  7. selenium ruby和java_Selenium 2之Ruby版——安装篇
  8. mysql的事务语句_MySQL提供的事务控制语句
  9. 鹦鹉助手模拟器 梦幻西游 找不到服务器,模拟器玩梦幻 17173鹦鹉助手模拟器上线...
  10. h5移动端flexible源码适配终端解读以及常用sass函数
  11. java案例代码17--正则表达式小案例
  12. [软件工程基础]2017.10.30 第三次 Scrum 会议
  13. 21模块-orientation【管理设备的方向信息】
  14. 免费远程桌面连接工具
  15. 《手把手教你学DSP》总结1
  16. Mac 修改 hosts 文件
  17. 航天器平台二次电源系统的可靠性设计
  18. 崩溃日志保存本地log,服务器上传
  19. 数理化解题研究杂志数理化解题研究杂志社数理化解题研究编辑部2022年第34期目录
  20. linux xz命令

热门文章

  1. “xxx”does not name a type 错误
  2. 向量vector 中主要函数的使用
  3. 我开挂的 2018!
  4. Apache DolphinScheduler 开源之夏学生项目申请开启,6 大课题等你来拿万元奖金!
  5. 从二进制到逻辑门——哲学中诞生的计算理论
  6. 新手做无货源店群该如何准确运营?店铺精细化运营对店铺有什么影响?
  7. 年轻人,你的时间到哪啦?
  8. linux more 乱码,Linux 中vim/more/cat/tail/head 命令查看文件显示乱码
  9. Git常用命令学习手册
  10. Guava-RateLimiter秒杀限流技术详解