Python基本文件操作实用指南

目录
  • 一、前言
  • 二、创建和打开文件
    • 1.打开一个不存在的文件时先创建该文件
    • 2.以二进制形式打开文件
    • 3.打开文件时指定编码方式
  • 三、关闭文件
  • 四、打开文件时使用with语句
  • 五、写入文件内容
  • 六、读取文件
    • 1.读取指定字符
    • 2.读取一行
    • 3.读取全部行
  • 总结

一、前言

在Python中,内置了文件(File)对象。在使用文件对象时,首先需要通过内置的open()方法创建一个文件对象,然后通过该对象提供的方法进行一些基本文件操作。例如,可以使用文件对象的write()方法向文件中写入内容,以及使用close()方法关闭文件等。下面将介绍如何应用Python的文件对象进行基本文件操作。

二、创建和打开文件

在Python中,想要操作文件需要先创建或者打开指定的文件并创建文件对象。这可以通过内置的open()函数实现。open()函数的基本语法格式如下:

file = open(filename[,mode[,buffering]])

参数说明:

  • file:被创建的文件对象
  • filename:要创建或打开文件的文件名称,需要使用单引号或双引号括起来。如果要打开的文件和当前文件在同一个目录下,那么直接写文件名即可,否则需要指定完整路径。例如,要打开当前路径下的名称为status.txt的文件,可以使用“status.txt”。
  • mode:可选参数,用于指定文件的打开模式。其参数值如下面所示。默认打开模式为只读(即r)
说明
r 以只读方式打开文件。文件的指针将会放在文件的开头。
rb 以二进制格式打开文件,并采取只读模式。文件的指针将会放在文件的开头。一般用于非文本文件,如照片、音乐等。
r+ 打开文件后,可以读取文件内容,也可以写入新的内容覆盖原有内容(从文件开头进行覆盖)
rb+ 以二进制格式打开文件,并采取写模式。文件的指针将会放在文件的开头。一般用于非文本文件,如图片、声音等。
w 以只写模式打开文件
wb 以二进制格式打开文件,并且采用只写模式。一般用于非文本文件,如图片、声音等
w+ 打开文件后,先清空原有内容,使其变为一个空的文件,对这个空文件有读写权限
wb+ 以二进制格式打开文件,并且采用读写模式。一般用于非文本文件,如图片、声音等
a 以追加模式打开一个文件。如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入
ab 以二进制格式打开一个文件,并采用追加模式。如果该文件已存在,文件指针将会放在文件的结尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入
a+ 已读写模式打开文件。如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入
ab+ 以二进制格式打开一个文件,并采用追加模式。如果该文件已经存在,文件指针将会放在文件的结尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入

1.打开一个不存在的文件时先创建该文件

在默认的情况下,使用open()函数打开一个不存在的文件,会抛出如图所示的异常。

要解决上图所示的错误,主要有以下两种方法:

  • 在当前目录下(即与执行的文件相同的目录)创建一个名称为 status.txt 的文件。
  • 在调用open()函数时,指定mode的参数值为w、w+、a、a+。这样,当要打开的文件不存在时,就可以创建新的文件了。

2.以二进制形式打开文件

使用open()函数不仅可以文本的形式打开文本文件,而且可以以二进制形式打开非文本文件,如图片、音频文件等。例如,创建一个名称为picture.jpg的图片文件(如图所示),并且应用open()函数以二进制方式打开该文件。

以二进制方式打开该文件,并输出创建的对象对的代码如下:

file = open("picture.jpg", "rb")
print(file)

执行上面代码,将显示如图所示的结果:

从上图中可看出,创建的是一个BufferedReader对象。对于该对象生成后,可以再应用其他的第三方模块进行处理。例如,上面的BufferedReader对象是通过打开图片文件实现的。那么就可以将其传入到第三期的图像处理库PIL的Image模块的open()方法中,以便于对图像进行处理(如调整大小等)

3.打开文件时指定编码方式

在使用open()函数打开文件时,默认采用GBK编码,当被打开的文件不是GBK编码时,将抛出异常,如图所示:

解决该问题的方法有两种,一种直接修改文件的编码,另外一种是在打开文件时,直接指定使用的编码方式。推荐采用后一种方法。下面重点介绍如何在打开文件时指定编码方式。

在调用open()函数时,通过添加“encoding=‘utf-8’”参数即可实现编码指定为UTF-8。如果想指定其他编码可以将单引号中的内容替换为想要指定的编码即可。

例如,打开采用UTF-8编码保存的notice.txt文件,可以使用下面的代码:

file = open("notice.txt", "r", encoding='utf-8')

三、关闭文件

打开文件后,需要及时关闭,以免对文件造成不必要的破坏。关闭文件可以使用文件对象close()方法实现。close()方法的语法格式如下:

file.close()    # 关闭文件

说明: close()方法先刷新缓冲区中还没写入的信息,然后再关闭文件,这样可以将没有写入到文件的内容写入到文件中。在关闭文件后,便不能再进行写入操作了。

四、打开文件时使用with语句

打开文件后,要及时将其关闭,如果忘记关闭可能会带来意想不到的问题。另外如果在打开文件时抛出异常,那么将导致文件不能及时关闭。为了更好地避免此类事情的发生,可以使用Python提供with语句。从而实现在处理文件时,无论是否抛出异常,都能保障with语句执行完毕后关闭已经打开的文件。with语句的基本语法格式如下:

with expression as target:
	with-body

参数说明:

expression :用于指定一个表达式,这里可以是打开文件的函数open()。
target:用于指定一个变量,并且将expression 的结果保存到这个变量中。
with-body:用于指定with语句体,其中可以是执行with语句相关联的一些操作语句。如果不想执行语句,可以直接使用pass语句来代替。

例如打开文件的语句,修改后的代码如下:

print("\n", "=" * 10, "Python经典应用", "=" * 10)
with open("massage.txt", "w") as file:  # 创建或打开保存Python经典应用信息的文件
    pass
print("\n 即将显示……\n")

五、写入文件内容

在前面的内容中,虽然创建并打开了一个文件,但是该文件中并没有任何内容,它的大小是0kb。Python中的文件对象提供了write()方法,可以像文件中写入内容。write()方法的语法格式如下:

file.write(string)

参数说明:

  • file:打开的文件对象
  • string:要写入的字符串

注意: 在调用write()方法向文件写入内容的前提是,打开文件时,指定的打开模式为w(可写)或者a(追加),否则,将抛出如图所示的异常:

六、读取文件

在Python中打开文件后,除了可以向其写入或追加内容,还可以读取文件中的内容。读取文件内容主要分为以下几种情况。

1.读取指定字符

文件对象提供了read()方法读取指定个数的字符,其语法格式如下:

file.read([size])

参数说明:

  • file:打开的文件对象
  • size:可选参数,用于指定要读取的字符个数,如果省略则一次性读取所有内容。

注意: 在调用read()方法读取文件内容的前提是,打开文件时,指定的模式为r(只读)或者r+(读写),否则,将抛出如图所示的异常。

例如,读取massage.txt中的前9字符串,可以使用下列代码:

with open("massage.txt", "r", encoding='utf-8') as file:  # 打开文件
    string = file.read(9)  # 读取前9字符串
    print(string)

例如,massage.txt文件的内容为:

Python的强度,强度到你无法想象!!!

那么执行以上代码,将显示以下内容:

使用read([size])方法读取文件时,是从文件的开头读取部分内容,可以先使用文件对象的seek()方法将文件的指针移动到新的位置,然后在应用read([size])方法读取,seek()方法基本语法如下:

file.seek(offset[,whence])

参数说明:

  • file:表示已经打开的文件对象。
  • offset:用于指定移动的字符个数,其具体位置与whence有关。
  • whence:用于指定从什么位置开始计算。值为0表示从文件头开始计算,值为1表示从当前位置计算,值为2表示从文件尾开始计算,默认为0。

注意: 对于 whence参数,如果在打开文件时,没有使用b模式(即rb),那么只允许从文件头开始计算相对位置,从文件尾计算时就会引发如图所示的异常:

例如,想要从文件的第6个字符开始读取2个字符,可以使用下列代码:

with open("message.txt", "r") as file:  # 打开文件
    file.seek(5)              # 移动指针到新的位置
    string = file.read(2)	# 读取2个字符
    print(string)

如果message.txt文件中内容为:

123456789

那么执行上面代码,将显示以下结果:

说明: 在使用seek()方法时,offset的值是按照一个汉字占两个字符、英文和数字点占一个字符计算的,这个与read(size)方法不同。

2.读取一行

在使用read()方法读取文件时,如果文件很大,一次读取完全部内容到内存,容易造成年内存不足,所以采取逐行读取。文件对象提供了readline()方法用于每次读取一行数据。readline()方法的语法格式如下:

file.readline()

其中,file为打开的文件对象,同read()方法一样,打开文件时,指定的模式为r(只读)或者r+(读写)。

print("\n", "=" * 20, "Python经典应用", "=" * 20)
with open("message.txt", "r", encoding="utf-8") as file:
    number = 0  # 记录行号
    while True:
        number += 1
        line = file.readline()
        if line == "":
            break
        print(number, line, end="\n")
print("\n ", "=" * 20, "over" * 20, "\n")

如果message.txt文件中内容为下图所示:

执行上面代码,将显示以下内容:

3.读取全部行

读取全部行的作用同调用read()方法时不指定size类似,只不过读取全部行时,返回的是一个字符串列表,每个元素为文件的一行内容。读取全部行,使用的是文件对象的readlines()方法,其语法格式如下:

file.readlines()

其中,file为打开的文件对象,同read()方法一样,打开文件时,指定的模式为r(只读)或者r+(读写)。

例如,通过readlines()方法读取message.txt文件中所有内容,并输出读取内容结果,代码如下:

print("\n", "=" * 20, "Python经典应用", "=" * 20)
with open("message.txt", "r", encoding="utf-8") as file:
    message = file.readlines()  # 读取全部信息
    print(message)
    print("\n ", "=" * 20, "over", "=" * 20, "\n")

执行上面代码,将显示以下内容:

从该运行结果中可以看出readlines()方法的返回值为一个字符串列表。在这个字符串列表中,每个元素为一行内容。如果文件较大时,采用这种方法输出读取的文件内容会很慢。这时可以将列表的内容逐行输出,例如,代码可以修改为以下内容:

print("\n", "=" * 20, "Python经典应用", "=" * 20)
with open("message.txt", "r", encoding="utf-8") as file:
    messageall = file.readlines()  # 读取全部信息
    for message in messageall:
        print(message)  # 输出一条信息
print("\n ", "=" * 20, "over", "=" * 20, "\n")

执行上面代码,将显示以下内容:

总结

到此这篇关于Python基本文件操作实用指南的文章就介绍到这了,更多相关Python文件操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 文件与目录操作

    1)os.path 1.1 os.path.isabs(path) 是否是绝对路径 1.2 os.path.isfile(path) 1.3 os.path.isdir(path) 1.4 os.path.islink(path) 是否是链接:但如果系统不支持链接,返回False 1.5 os.path.ismount(path) 是否为驱动器:但是很不幸的是在python 3.0中这是个不能运行的函数. 原函数如下: # Is a path a mount point? Either a ro

  • Python文件操作,open读写文件,追加文本内容实例

    1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.txt') try: all_the_text = file_object.read( ) finally: file_object.close( ) 注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法. 2.读文件读文本文件input

  • Python 文件读写操作实例详解

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目录名:os.listdir()3.函数用来删除一个文件:os.remove()4.删除多个目录:os.removedirs(r"c:\python")5.检验给出的路径是否是一个文件:os.path.isfile()6.检验给出的路径是否是一个目录:os.path.isdir()7.判断是

  • 简单文件操作python 修改文件指定行的方法

    例一: 复制代码 代码如下: #!/usr/bin/pythonimport sysimport reif __name__=="__main__": f=file("hi.txt","w+") li=["hello\n","hi\n"] f.writelines(li) f.close() "W+"模式:如果没有hi.txt则创建文件写入:如果存在,则清空hi.txt内容,从新写入.

  • Python中文件的读取和写入操作

    从文件中读取数据 读取整个文件 这里假设在当前目录下有一个文件名为'pi_digits.txt'的文本文件,里面的数据如下: 3.1415926535 8979323846 2643383279 with open('pi_digits.txt') as f: # 默认模式为'r',只读模式 contents = f.read() # 读取文件全部内容 print contents # 输出时在最后会多出一行(read()函数到达文件末会返回一个空字符,显示出空字符就是一个空行) print '

  • Python中的文件和目录操作实现代码

    本文将详细解释这些函数的使用方法.首先,我们介绍Python语言中类似于Windows系统的dir命令的列出文件功能,然后描述如何测试一个文件名对应的是一个标准文件.目录还是链接,以及提取文件大小和日期的方法.之后,我们还将介绍如何删除文件和目录,如何复制和删除文件,以及怎样将一个完整的文件路径分解成目录部分和文件名部分,最后,我们讲解目录的创建,以及如何在目录树中移动目录并处理文件. 一.显示目录内容 当我们想要列出当前目录中所有扩展名为.jpg或.gif的文件的时候,就可以使用glob模块来

  • python操作xml文件详细介绍

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 一.什么是xml? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. abc.xml 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <catalo

  • python 文件和路径操作函数小结

    1: os.listdir(path) //path为目录 功能相当于在path目录下执行dir命令,返回为list类型 print os.listdir('..') 2: os.path.walk(path,visit,arg) path :是将要遍历的目录 visit :是一个函数指针,函数圆形为: callback(arg,dir,fileList) 其中arg为为传给walk的arg , dir是path下的一个目录,fileList为dir下的文件和目录组成的list, arg:传给v

  • python文件和目录操作方法大全(含实例)

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目录名:os.listdir()3.函数用来删除一个文件:os.remove()4.删除多个目录:os.removedirs(r"c:\python")5.检验给出的路径是否是一个文件:os.path.isfile()6.检验给出的路径是否是一个目录:os.path.isdir()7.判断是

  • Python基本文件操作实用指南

    目录 一.前言 二.创建和打开文件 1.打开一个不存在的文件时先创建该文件 2.以二进制形式打开文件 3.打开文件时指定编码方式 三.关闭文件 四.打开文件时使用with语句 五.写入文件内容 六.读取文件 1.读取指定字符 2.读取一行 3.读取全部行 总结 一.前言 在Python中,内置了文件(File)对象.在使用文件对象时,首先需要通过内置的open()方法创建一个文件对象,然后通过该对象提供的方法进行一些基本文件操作.例如,可以使用文件对象的write()方法向文件中写入内容,以及使

  • Python复制文件操作实例详解

    本文实例讲述了Python复制文件操作用法.分享给大家供大家参考,具体如下: 这里用python实现了一个小型的自动发版本的工具.这个"自动发版本"有点虚, 只是简单地把debug 目录下的配置文件复制到指定目录,把Release下的生成文件复制到同一指定,过滤掉不需要的文件夹(.svn),然后再往这个指定目录添加几个特定的文件. 这个是我的第一个python小程序. 下面就来看其代码的实现. 首先插入必要的库: import os import os.path import shut

  • Python对文件操作知识汇总

    打开文件 操作文件 1打开文件时,需要指定文件路径和打开方式 打开方式: r:只读 w:只写 a:追加 "+"表示可以同时读写某个文件 r+:读写 w+:写读 a+:同a U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用) rU r+U "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注) rb wb ab f = open('test.log',

  • Python常见文件操作的函数示例代码

    复制代码 代码如下: # -*-coding:utf8 -*- ''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() 去掉文件名, 返回目录路径 join() 将分离的各部分组合成一个路径名 split() 返回 (dirname(), basename()) 元组 splitdrive() 返回 (drivename, pathname) 元组 splitext() 返回 (filename,

  • Python使用文件操作实现一个XX信息管理系统的示例

    写在前面 大家好,我是第一次python学了一个学期,期末要完成一个毕业生信息管理系统大作业的小韩了,由于上次没有仔细看开发实现的要求,实现了一个简单的毕业生信息管理系统,而这次专门整理了两种使用文件进行保存数据实现的毕业生信息管理系统,因为是第一次学python,还不太熟悉python的写法, 而之前是学 c .c++,感觉我的这个写的有一股 c/c++的内味: 1. 使用excel .xlsx 保存数据实现一个毕业生信息管理系统2. 使用文本文档.txt保存数据实现一个毕业生信息管理系统 以

  • 利用python进行文件操作

    作者: wyh草样 出处:https://www.cnblogs.com/wyh0923/p/14084898.html 什么是文件 文件是系统存储区域的一个命名位置,用来存储一些信息,便于后续访问.能够在非易失性存储器中实现持续性存储,比如在硬盘上.当我们要读取或者写入文件时,我们需要打开文件:在操作完毕时,我们需要关闭文件,以便释放和文件操作相关的系统资源,因此,文件操作的主要包括以下: 打开文件 读取或者写入 关闭文件 打开文件 Python使用内置的open()函数打开一个文件,并且返回

  • Python高级文件操作之shutil库详解

    前言 什么算是高层的文件操作呢? 普通的文件操作,我们一般只涉及创建文件,文件夹以及写入文件等等.假如我现在需要复制一个文件的内容到另一个文件之中,用pathlib等都只能先打开复制文件,然后进行将其读出来保存,然后再写入新的文件,这种普通的复制操作,无形之中增加了许多步骤. 而shutil库可以直接完成复制符间的操作,同时还支持归档.本篇,将详细介绍文件的高层次操作. 一.copyfile() copyfile()函数用于将一个文件的内容复制到另一个文件之中,准备的来说,它不是copy内容,而

  • python中文件操作与异常的处理图文详解

    目录 一. 文件的操作 1.1创建文件 1.2写入数据 1.3读数据 1.4.2读数据 1.5读写数据 1.6删除文件 1.6写入文件 1.7读取图片 1.8备份图片 1.9文件重命名 1.10创建文件夹 1.11获取当前目录 1.12读写二进制文件 二.异常 2.1各种异常的演示 2.2捕捉异常 2.3try/finally 2.4异常的传递 2.5触发异常 2.6自定义异常 总结 一. 文件的操作 1.1创建文件 格式:f = open('文件', 'w')或者f = open('文件',

  • Python常见文件操作的示例详解

    目录 从文件中读取数据 为什么要提供文件路径 逐行读取 创建一个包含文件各行内容的列表 使用文件中的内容 包含千位以上的大型文件 圆周率中包含你的生日吗 写入文件 附加到文件 从文件中读取数据 1:读取整个文件 首先创建一个文件,它包含一些文本信息,注意:如果该文件为.py文件,则再进行操作的时候可以不写路径,如果不是.py文件,则必须标明路径. 现在我们创建一个python文件,名为text.py,给他写入如下文本信息: 下面的程序打开并读取这个文件,再将其内容显示到屏幕上: with ope

  • Python文件基本操作实用指南

    文件的存储方式 在计算机中,文件是以 二进制的方式保存在磁盘上的 文本文件和二进制文件 文本文件 可以使用文本编辑软件查看 本质上还是二进制文件 二进制文件 保存的内容 不是给人直接阅读的,而是提供给其她软件使用的 二进制文件不能使用 文件编辑软件 查看 文件基本操作 操作文件的套路 在计算机 中要操作文件一共包含三个步骤: 1.打开文件 2.读.写文件 读 将文件内容读入内容 写 将内存内容写入文件 3.关闭文件 操作文件的函数/方法 序号 函数/方法 说明 1 open 打开文件,并且返回文

随机推荐