Python文件操作:文件的打开关闭读取写入

一、文件的打开关闭

Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作。

文件操作都分为以下几个步骤:

1.打开文件。

2.操作文件:读/写。

3.关闭文件。

操作系统中的文件默认处于存储状态,读写文件时需要请求操作系统打开一个要在当前程序操作的对象,打开不存在的文件可以创建文件。open()方法通过接收"文件路径"以及“文件打开模式”等参数来打开一个文件,并且返回文件对象。打开后的文件只能在当前程序操作,不能被另一个进程占用。操作之后一定将文件关闭,进程将释放对文件的控制,使文件恢复存储状态,这时,另一个进程将能够操作此文件。

open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。其中,file对象使用 open 函数来创建,file对象常用的函数如下:

file.close():关闭文件。关闭后文件不能再进行读写操作。

file.flush():刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

file.fileno():返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

file.isatty():如果文件连接到一个终端设备返回 True,否则返回 False。

file.next():返回文件下一行。

file.read([size]):从文件读取指定的字节数,如果未给定或为负则读取所有。

file.readline([size]):读取整行,包括 "\n" 字符。

file.readlines([sizeint]):读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。

file.seek(offset[, whence]):设置文件当前位置。

file.tell():返回文件当前位置。

file.truncate([size]):截取文件,截取的字节通过size指定,默认为当前文件位置。

file.write(str):将字符串写入文件,返回的是写入的字符长度。

file.writelines(sequence):向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

文件打开模式如下:

t:文本模式 (默认)。

x:写模式,新建一个文件,如果该文件已存在则会报错。

b:二进制模式。

+:打开一个文件进行更新(可读可写)。

U:通用换行模式(不推荐)。

r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

rb:以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。

r+:打开一个文件用于读写。文件指针将会放在文件的开头。

rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。

w:打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

w+:打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

二、文件的读写

1.Python中读取文件的相关方法:

<file>.read():一次读取文件所有内容,返回一个字符串或字节流。

<file>.read(size):每次最多读取指定长度的内容,返回一个字符串或字节流。在Python3中size指定的是字符长度。

<file>.readlines():一次读取文件所有内容,按行返回一个列表。

<file>.readline():每次只读取一行内容。

我们来读取一个存放在D盘的名为“123.txt”的文本文件,该文件的字符编码为utf-8,其中包含的文本是北岛的诗歌《走吧》,如下所示。

# 第一步:(以只读模式)打开文件

f = open('D:/123.txt', mode='r', encoding='utf-8')  

# 第二步:读取文件内容

print(f.read())

# 第三步:关闭文件

f.close()

运行结果:

2.Python中写入文件的相关方法:

<file>.write():向文件写入一个字符串或字节流。

<file>.writelines():将一个元素全为字符串的列表写入文件。

<file>.seek(offset):改变当前操作指针的位置,offset的值:

0——文件开头

1——当前位置

2——文件结尾

注意:Python字符串可以是二进制数据,而不是仅仅是文字。write()方法不会在字符串的结尾添加换行符('\n')。

我们创建一个文本文件用来写入文本,该文件的字符编码为utf-8,如下所示。

# 第一步:(以只写模式)打开文件

f = open('D:/123.txt', mode='w', encoding='utf-8')

# 第二步:写入文件内容

f.write( "人生若只如初见,何事秋风悲画扇。")

# 第三步:关闭文件

f.close()

运行结果:

也可以向文件写入一个列表,打印输出结果,如下所示。

f = open('D:/123.txt', mode='w+', encoding='utf-8')   

ls=['一本正经','两厢情愿','三顾茅庐','四海为家']  

f.writelines(ls)

#写入内容在文件操作指针之前,用seek(0)将文件操作指针返回到文件开始使其顺利向后读入并打印内容,否则打印内容无法显示

f.seek(0)

for line in f:

print(line)

f.close()

运行结果:

参考资料:

https://www.runoob.com/python/python-files-io.html

Python文件操作:文件的打开关闭读取写入的更多相关文章

  1. python读写操作文件

    with open(xxx,'r,coding='utf-8') as f:   #打开文件赋值给F ,并且执行完了之后不需要 f.close(). 在Python 2.7 及以后,with又支持同时 ...

  2. 文件操作mode学习总结-----Python学习总结【第四篇】:Python之文件操作(文件、正则、json、pickle)

    非常全的博客,防丢链接参考https://www.cnblogs.com/madsnotes/articles/5521551.html 1.文件操作 1.1 操作流程 1)文件打开 2)文件操作 3 ...

  3. 在Python中操作文件之truncate()方法的使用教程

    在Python中操作文件之truncate()方法的使用教程 这篇文章主要介绍了在Python中操作文件之truncate()方法的使用教程,是Python入门学习中的基础知识,需要的朋友可以参考下 ...

  4. 字符编码和Python代码操作文件

    字符编码和Python代码操作文件 读写模式之a模式 # a模式 只追加模式 # 路径不存在:自动创建 with open(r'a.txt','a',encoding='utf8') as f: pa ...

  5. 根据python上下文管理,写一个在读文件内容前后自动打开关闭文件的程序

    利用上下文管理实现读f文件前后自动打开关闭文件#在本目录创建f文件,内容写monkey代码如下 import contextlib #导入模块1 @contextlib.contextmanager# ...

  6. linux文件操作篇 (二) 打开和关闭文件

    2.1 打开文件和关闭文件 #include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>  头文件 i ...

  7. PHP文件操作,多行句子的读取,file()函数,file_get_contents()函数,file_put_contents()函数,is_file,统计网站pv (访问量),文件的复制 copy,文件重命名 rename,删除文件 unlink

    php中添加utf-8: header("Content-type:text/html;charset='UTF-8'"); 文件操作步骤: 1.在同一目录下建立一个file.tx ...

  8. python 关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)

    一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname&quo ...

  9. python 文件操作: 文件操作的函数, 模式及常用操作.

    1.文件操作的函数: open("文件名(路径)", mode = '模式', encoding = "字符集") 2.模式: r , w , a , r+ , ...

随机推荐

  1. 【CuteJavaScript】Angular6入门项目(2.构建项目页面和组件)

    本文目录 一.项目起步 二.编写路由组件 三.编写页面组件 1.编写单一组件 2.模拟数据 3.编写主从组件 四.编写服务 1.为什么需要服务 2.编写服务 五.引入RxJS 1.关于RxJS 2.引 ...

  2. 关于 Kafka 的一些面试题目

    上周客串了一下面试官,在这里就简单记录一下期间我问到的一些关于 Kafka 的面试题目,这些都是我平时在学习 Kafka 的一些总结要点. 谈谈你对 kafka 的整体认识? 问这个问题主要是想知道面 ...

  3. CentOS7下设置网卡名称以eth开头

    一.前言 在CentOS7下,网卡的名称不再是以eth命名了,下以内容将教你如何在CentOS7下修改网卡以"eth"开头. 二.环境 ♦CentOS7.5_x86-64 三.配置 ...

  4. AI行业精选日报_人工智能(12·20)

    IDC:中国智能家居市场2020年十大预测 12 月 20 日消息,「IDC 咨询」官方公众号发布「中国智能家居 2020 年十大预测」.具体内容如下:互联平台加速整合.语音助手广泛赋能.智能电视显著 ...

  5. C#中使用Path、Directory、Split、Substring实现对文件路径和文件名的常用操作实例

    场景 现在有一个文件路径 E:\\BTSData\\2019-11\\admin_20180918_1_1_2 需要获取最后的文件名admin_20180918_1_1_2 需要获取文件的上层目录20 ...

  6. 分布式事物 - 基于RPC调用 - 补偿模式

    前提 所有服务均有独立的事物管理机制,相互间没有任何关联. 所有业务接口都有对应的补偿方法,用于将已经更新的数据还原到上一次的状态. 本次实例为同步业务,理想状态下,只有全部成功或全部失败两种情况. ...

  7. Geoserver设置style

    1 背景 我们在ArcMap中可以直接通过symbol功能对图层进行定制化配图.但是,如果我们将配好图的shp图层在GeoServer中发布时,会发现图层样式完全丢失了.其实原因很简单,用ArcMap ...

  8. 61-如何使用 Weave 网络?

    weave 是 Weaveworks 开发的容器网络解决方案.weave 创建的虚拟网络可以将部署在多个主机上的容器连接起来.对容器来说,weave 就像一个巨大的以太网交换机,所有容器都被接入这个交 ...

  9. 林克的小本本之——HCL网络知识随笔

    单臂路由 单臂路由是一种通过在路由器的一个接口上配置逻辑接口,来实现不同Vlan之间互通的方法. 实例: #配置SW1的VLAN [SW1]vlan 2 #配置端口vlan略 [SW1]int g1/ ...

  10. CentOS 7 安装 Nginx 配置反向代理

    Linux使用Nginx Yum存储库上安装Nginx,适用于Red Hat Enterprise Linux和CentOS系统. 1.添加设置Nginx Yum存储库 在CentOS中首次安装Ngi ...