百木园-与人分享,
就是让自己快乐。

Python 文件读写操作-Python零基础入门教程

目录

  • 一.Python 文件的打开 open
  • 二.Python 文件的关闭 close
  • 三.Python 文件的读取 read
    • 1.read 函数
    • 2.readline 函数
    • 3.readlines 函数
  • 四.Python 文件的写入 write
    • 1.write 函数语法
    • 2.write 函数使用案例
  • 五.Python 文件偏移 seek
    • 1.seek 函数
    • 2.tell 函数
    • 3.seek / tell 函数示例代码
  • 六.重点总结
  • 七.猜你喜欢

零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门

Python 除了通过 print 函数将数据输出到控制台,也可以通过读 / 写文件的方式读取 / 输出到磁盘文件中,文件读写简称 I / O 操作。Python 文件 I / O 操作一共分为四部分:

  • 打开(open)
  • 读取(read)
  • 写入(write)
  • 关闭(close)

一.Python 文件的打开 open

在 Python 中打开文件使用函数 open,该函数返回文件句柄,具体使用方法如下:

file = open(\"文件名\",\"打开文件模式\")

# 示例代码:
# 打开d:/1.txt文件,如果d盘没有这个文件,会自动在d盘创建1.txt的空白文件,file是返回的文件句柄供读/写/关闭文件操作
file = open(\"d:/1.txt\",\"wb\")

其中,打开文件模式有以下几种类型:

二.Python 文件的关闭 close

文件在打开读写之后记得要有关闭操作,就好比蹲完坑得擦屁股,关闭文件使用 close 函数。

注意:文件关闭之后,不能在继续对文件读写操作,如果需要读写操作需要重新 open 打开文件。

close() # 关闭文件

三.Python 文件的读取 read

文件打开之后,可以通过返回的文件句柄读取文件中的内容,文件读取有以下几个函数:

1.read 函数

\'\'\'
参数:
count - 表示需要读取的文字长度, conut 是缺省参数,如果没有设置 count 值,默认读取整个文件所有内容,该函数返回读取到的内容;

返回值:返回读取到的内容; 文件读取返回的内容并非字符串 str 类型,而是字节类型 bytes 类型,\'b\' 前缀代表的就是 bytes .
\'\'\'

read( [count] )

2.readline 函数

//读取文件一行数据,返回读取的内容

readline()

3.readlines 函数

//读取文件的所有行内容,返回读取的所有内容,注意:返回的数据类型是列表,列表中每个数据都是文件中的一行数据

readlines()

**注意:文件读取返回的内容并非字符串 str 类型,而是字节类型 bytes 类型,’b’ 前缀代表的就是 bytes . **

如果想将 bytes 类型转为字符串直接使用 bytes.decode 方法即可,decode 方法默认使用 UTF-8 编码;假如 d:/1.txt 中的内容如下:

@Blog(个人博客地址): www.codersrc.com
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

文件读取的三种方式示例代码如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
\"\"\"
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 文件读写操作.py
@Time:2021/04/17 10:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

\"\"\"

# 方法一:
print(\"方法一:使用 read() 函数读取txt内容\")
file_object = open(\"d:/1.txt\",\"rb\")
contents = file_object.read() # 默认读取所有内容

# 读取文件内容,如果文件中含有中文需要decode()解码,否则中文无法显示
print(contents)
print(\"---\"*20)
# 使用decode()解码中文,默认解码格式为utf-8
print(\"使用decode()函数解码中文:\")
print(contents.decode())
file_object.close()

print(\"***\"*20)

# 方法二:
print(\"方法二:使用 readline() 函数读取txt内容\")
file_object = open(\"d:/1.txt\",\"rb\")
while True:
contents = file_object.readline()
print(contents.decode())# 使用decode()解码中文,默认解码格式为utf-8
if len(contents) == 0: # 读取内容长度为0,读取结束
break
file_object.close()

print(\"***\"*20)

# 方法三:
print(\"方法三:使用 readlines() 函数读取txt内容\")
file_object = open(\"d:/1.txt\",\"rb\")
# readlines() 返回列表,一行数据就是列表中的一个元素
contents = file_object.readlines()
# 遍历列表
for content in contents:
print(content.decode())# 使用decode()解码中文,默认解码格式为utf-8
file_object.close()

\'\'\'
输出结果:

方法一:使用 read() 函数读取txt内容

b\'@Blog(\\xe4\\xb8\\xaa\\xe4\\xba\\xba\\xe5\\x8d\\x9a\\xe5\\xae\\xa2\\xe5\\x9c\\xb0\\xe5\\x9d\\x80): www.codersrc.com\\r\\n@WeChat Official Account(\\xe5\\xbe\\xae\\xe4\\xbf\\xa1\\xe5\\x85\\xac\\xe4\\xbc\\x97\\xe5\\x8f\\xb7)\\xef\\xbc\\x9a\\xe7\\x8c\\xbf\\xe8\\xaf\\xb4python\\r\\n@Motto:\\xe4\\xb8\\x8d\\xe7\\xa7\\xaf\\xe8\\xb7\\xac\\xe6\\xad\\xa5\\xe6\\x97\\xa0\\xe4\\xbb\\xa5\\xe8\\x87\\xb3\\xe5\\x8d\\x83\\xe9\\x87\\x8c\\xef\\xbc\\x8c\\xe4\\xb8\\x8d\\xe7\\xa7\\xaf\\xe5\\xb0\\x8f\\xe6\\xb5\\x81\\xe6\\x97\\xa0\\xe4\\xbb\\xa5\\xe6\\x88\\x90\\xe6\\xb1\\x9f\\xe6\\xb5\\xb7\\xef\\xbc\\x8c\\xe7\\xa8\\x8b\\xe5\\xba\\x8f\\xe4\\xba\\xba\\xe7\\x94\\x9f\\xe7\\x9a\\x84\\xe7\\xb2\\xbe\\xe5\\xbd\\xa9\\xe9\\x9c\\x80\\xe8\\xa6\\x81\\xe5\\x9d\\x9a\\xe6\\x8c\\x81\\xe4\\xb8\\x8d\\xe6\\x87\\x88\\xe5\\x9c\\xb0\\xe7\\xa7\\xaf\\xe7\\xb4\\xaf\\xef\\xbc\\x81\\r\\n\'
------------------------------------------------------------
使用decode()函数解码中文:
@Blog(个人博客地址): www.codersrc.com
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

************************************************************
方法二:使用 readline() 函数读取txt内容

@Blog(个人博客地址): www.codersrc.com
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

************************************************************
方法三:使用 readlines() 函数读取txt内容

@Blog(个人博客地址): www.codersrc.com
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
\'\'\'

四.Python 文件的写入 write

1.write 函数语法

文件写入可通过函数 write 完成,使用比较简单,先看看语法:

//直接传入 bytes 类型的字符即可,\'b\' 前缀代表的就是bytes.

write( [bytes] )

2.write 函数使用案例

# !usr/bin/env python
# -*- coding:utf-8 _*-
\"\"\"
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 文件读写操作.py
@Time:2021/04/17 10:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

\"\"\"

file_object = open(\"d:/2.txt\",\"wb\")

# \'\\n\' 是文件I/O中的换行符,写完文件之后,自动换行
file_object.write(b\"1234567\\n\")
# 注意单引号和双引号的配合使用
file_object.write(b\"file_object.write(b\'sad\')\\n\")
file_object.write(b\"python \\n\")

file_object.close()

\'\'\'
代码执行完成后,d:/2.txt文件内容如下:

1234567
file_object.write(b\'sad\')
python
\'\'\'

注意:写入方式 ‘wb’ ,每次写入文件都会覆盖上一次的内容,即写入之前的内容会被清空;

五.Python 文件偏移 seek

有人看了上面 read 函数的示例代码可能会觉得频繁的打开和关闭文件会比较麻烦。那么仅仅打开和关闭文件一次,通过文件的偏移也能完成上述功能,文件的偏移使用** seek** 函数 。一般而言,seek 函数和 tell 函数都搭配使用;

1.seek 函数

\'\'\'
参数:
offset - 表示相对whence 偏移多少个字节;
whence - 表示偏移的位置,0 代表从文件开头开始算起,1 代表从当前位置开始算起,2 代表从文件末尾算起;

\'\'\'

seek([offset],[whence])

2.tell 函数

// 相对于文件开始位置,当前偏移的字节数

seek([offset],[whence])

小窍门:tell 函数也可以用来计算整个文件的 bytes 长度;

3.seek / tell 函数示例代码

# !usr/bin/env python
# -*- coding:utf-8 _*-
\"\"\"
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 文件读写操作.py
@Time:2021/04/17 10:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

\"\"\"

file_object = open(\"d:/2.txt\",\"rb\")

# 获取当前的文件偏移,由于还没开始读取内容,偏移量等于 0
count = file_object.tell()
print(count)
# 读取文本所有数据内容,文件自动偏移到文件末尾
contents = file_object.read()
# 获取整个文件的偏移量 ,实际上就是文件内容的大小
count = file_object.tell()
print(count)
# 将文件指针偏移到文件开始位置
file_object.seek(0,0)
# 读取一行数据,按道理讲应该是获取第一行数据
contents = file_object.readline()
print(contents.decode())
# 获取当前偏移量
count = file_object.tell()
print(count)
# 继续读取一行数据
contents = file_object.readline()
print(contents.decode())
# 获取当前偏移量
count = file_object.tell()
print(count)
file_object.close()

\'\'\'
输出内容:

0
474
python教程 - 猿说python : 第一行数据 www.codersrc.com
68
python教程 - 猿说python : 第二行数据 www.codersrc.com
136
\'\'\'

注意:一般只要调用 read / readline / readlines / write 等函数,文件指针会自动发生偏移。

六.重点总结

  • 1.read 函数可以设置读取指定的长度,例如:只读取 10 个字符 read(10);
  • 2.readlines 返回值是列表 list,并非 bytes 类型,而列表中的每一个元素都是文件中的一行数据,类型是 bytes 类型;
  • 3.如果文件读取的内容含有中文,需要通过函数 decode 方法解码转为字符串,decode 方法默认为 UTF-8 解码;
  • 4.文件 open 之后记得 close ,养成良好的书写习惯;

七.猜你喜欢

  • Python for 循环
  • Python 字符串
  • Python 列表 list
  • Python 元组 tuple
  • Python 字典 dict
  • Python 条件推导式
  • Python 列表推导式
  • Python 字典推导式
  • Python 函数声明和调用
  • Python 不定长参数 *argc/**kargcs
  • Python 匿名函数 lambda
  • Python return 逻辑判断表达式
  • Python 字符串/列表/元组/字典之间的相互转换
  • Python 局部变量和全局变量
  • Python type 函数和 isinstance 函数区别
  • Python is 和 == 区别
  • Python 可变数据类型和不可变数据类型
  • Python 浅拷贝和深拷贝
  • 未经允许不得转载:猿说编程 » Python 文件读写操作

    本文由博客 - 猿说编程 猿说编程 发布!

    来源:https://www.cnblogs.com/shuopython/p/14872164.html
    图文来源于网络,如有侵权请联系删除。

    未经允许不得转载:百木园 » Python 文件读写操作-Python零基础入门教程

    相关推荐

    • 暂无文章