IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 代码实例学python语法(1):文件读写 -> 正文阅读

[开发工具]代码实例学python语法(1):文件读写

在使用python编程时,经常会遇到读写文件的操作。很多童鞋困扰于读写文件的各种模式(如阅读、写入、追加等),以及搞不清open、read、readline、readlines、write等方法的使用。文件读写是python基本操作,本文从实例简要学习,并呈现其代码实现差异性。

1、文件的打开与关闭:open函数和close函数

1.1 open函数

如果你想用python读取文件(如txt、csv等),第一步要用open函数打开文件。open()是python的内置函数,它会返回一个文件对象,这个文件对象拥有read、readline、write、close等方法。open函数有两个参数:

fo = open(‘file’,‘mode’)

参数解释
file:需要打开的文件路径
mode(可选):打开文件的模式,如只读、追加、写入等

mode常用的模式:
r:表示文件只能读取
w:表示文件只能写入
a:表示打开文件,在原有内容的基础上追加内容,在末尾写入
w+:表示可以对文件进行读写双重操作

当你需要以字节(二进制)形式读写文件时,只需要在mode参数中追加’b’即可:
rb:以二进制格式打开一个文件,用于只读
wb:以二进制格式打开一个文件,用于只写
ab:以二进制格式打开一个文件,用于追加
wb+:以二进制格式打开一个文件,用于读写

当你在默认模式下读取文本文件时(二进制文件不可以),文件中的换行符会转换为’\n’形式。
在这里插入图片描述

1.2 close函数

File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。
如下实例:

# 打开一个文件
fo = open("foo.txt", "w")
print("文件名: ", fo.name)
 
# 关闭打开的文件
fo.close()

1.3 with语句

在打开文件时,很多人通常直接用open(‘file’),这样并不酷。最好使用 with 关键字。优点是当子句体结束后文件会正确关闭,即使在某个时刻引发了异常。
例子:

with open('workfile') as f:
     read_data = f.read()
f.closed

这是出于异常处理的一种文件打开方式。(是不是显得逼格更高呢?haha)

2、FILE对象

一个文件被打开后,你有一个file对象fo,你可以得到有关该文件的各种信息。以下是和file对象相关的所有属性的列表:

属性描述
file.close关闭文件,若关闭返回True
file.mode返回文件的打开模式
file.name返回文件的名称

如下实例:

# 打开一个文件
fo = open("foo.txt", "w")
print("文件名: ", fo.name)
print("是否已关闭 : ", fo.closed)
print("访问模式 : ", fo.mode)

实例输出结果如下:

文件名:  foo.txt
是否已关闭 :  False
访问模式 :  w

3、文件对象的三种读取方式:read()、readline()和readlines()

下面以一个csv文件的读取为例进行说明。csv内容如下:

Frog
FrogDogShadowDiversion
1m3m2m1m
2m4m2m5m
4m7m6m6m
9m8m6m8m
1p1p3p8m

3.1 read()函数

当使用open函数打开文件后,就可以使用该文件对象的各种方法了,read就是其中一种。read()会读取一些数据并将其作为字符串(在文本模式下)或字节对象(在二进制模式下)返回。

read()有一个参数:

#参数size(可选)为数字,表示从已打开文件中读取的字节计数,默认情况下为读取全部。
fo.read(size) # fo为文件对象

读取上述csv文件的前66个字节如下:

fo = open("f:\\test.csv","r")
content = fo.read(66)
print(content)
fo.close()

输出结果为:

Frog,,,
Frog,Dog,Shadow,Diversion
1m,3m,2m,1m
2m,4m,2m,5m
4m,7m,6m

注意,这里的字节包含每一行行末的换行符\n。空格不占字节位置。

3.2 readline()函数

readline方法从文件中读取整行,包括换行符’\n’。换行符(\n)留在字符串的末尾,如果文件不以换行符结尾,则在文件的最后一行省略,这使得返回值明确无误。如果 f.readline() 返回一个空的字符串,则表示已经到达了文件末尾,而空行使用 ‘\n’ 表示,该字符串只包含一个换行符。
f.readline()有一个参数:f.readline(size),其中参数size表示从文件读取的字节数。
仍以上述csv文件为例。

with  open('f:\\test.csv') as f:
    print(f.readline())
    print(f.readline(13))
    f.close()

输出结果为:

Frog,,,

Frog,Dog,Shad

可以看出,readline方法会记住上一个readline函数读取的位置,接着读取下一行。所以当你需要遍历文件每一行的时候,不妨使用readline方法吧!

3.3 readlines()函数

readlines方法和readline方法长得像,但功能不一样,前面说过readline方法只读取一行,readlines方法则是读取所有行,返回的是所有行组成的列表。readlines方法没有参数,使用更加简单。

with  open('f:\\test.csv') as f:
    print(f.readlines())
    f.close()

输出结果为:

['Frog,,,\n', 'Frog,Dog,Shadow,Diversion\n', '1m,3m,2m,1m\n', '2m,4m,2m,5m\n', '4m,7m,6m,6m\n', '9m,8m,6m,8m\n', '1p,1p,3p,8m\n']

显示了csv文件中每一行的换行符,每一行为一个字符串。更进一步进行行处理,实例如下:

with open('f:\\test.csv') as fo:
     for line in fo.readlines():
         line = line.strip()  # 移除换行符
         data = line.split(',') # 以,切片分割成多个小字符串
         print("data",data)

得到各行处理的结果:

data ['Frog', '', '', '']
data ['Frog', 'Dog', 'Shadow', 'Diversion']
data ['1m', '3m', '2m', '1m']
data ['2m', '4m', '2m', '5m']
data ['4m', '7m', '6m', '6m']
data ['9m', '8m', '6m', '8m']
data ['1p', '1p', '3p', '8m']

4、文件对象的写操作:write()

write方法顾名思义,就是将字符串写入到文件里。

with  open('sample.txt','w') as fw:
    fw.write('hello,my friends!\nthis is python big data analysis')
    fw.close()
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:36:19  更:2021-11-10 12:36:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:24:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码