Python文件的操作处理详解

目录
  • 1.使用open()函数打开文件夹
  • 2.文件的操作
  • 3.使用File操作文件
    • 3.1File对象的介绍
  • 总结

1.使用open()函数打开文件夹

在读取一个文件的内容之前,需要先打开这个文件。在Python程序中可以通过内置函数open()来打开一个文件程序中,,并用相关的方法读或写文件文件中的内容以供程序的处理和使用,同时可以将文件看作Python中的一种数据类型。是用函数open()的语法格式如下。

open(filename, mode='r', buffering=None, encoding=None, errors=None,
     newline=None, closefd=True, opener=None)

open: 打开
      以什么样的方式打开, 读或写 read, write
          以读的方式:文本的方式, 二进制的方式
          以写的方式:文本的方式,二进制的方式
      写文件的时候:覆盖,追加(两种方式)

当使用上述函数open()打开一个文件后, 就会放回一个文件对象。上述格式中主要参数的具体说明如下所示:

  • filename:表示要打开的文件名。(路径+文件名)
  • mode:模式。
  • buffering:可选参数,缓冲区大小
  • encoding:文件编码类型。
  • 文本文件才有可能需要编码,二进制文件不需要指定编码 否则会报出异常
  • errors:编码错误处理方式。
  • newline:控制通用换行符模式的行为。
  • closefd:控制在关闭文件时是否彻底关闭文件。

上述格式中,参数“mode”表示文件打开模式。在Python程序中,常用的文件打开模式如下表所示。

文件打开模式
模式 描述
r 以读的方式打开文件(默认)
rb 以二进制的格式打开一个文件只用于读。文件指针将会放在文件开头。
r+ 打开一个文件用于读写。文件指针将会放在文件开头。
rb+ 以二进制的格式打开一个文件用于读写。文件指针将会放在文件开头。
w 以写的方式打开,先清空文件再写(覆盖),如果该文件不存在,创建新文件
wb 以二进制的格式打开文件并写入,先清空文件再写(覆盖),如果该文件不存在,创建新文件。
w+ 以二进制的格式打开一个文件用于读写。先清空文件再写(覆盖),如果该文件不存在,创建新文件。
wb+ 以二进制的格式打开文件并读写,先清空文件再写(覆盖),如果该文件不存在,创建新文件。
a 以追加的方式去写
ab 以二进制的格式打开一个文件夹用于追加。如果该文件存在,文件指针将会放在文件的结尾。也就是说,新的内容将会写入到已有的内容之后。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件。
ab+ 以二进制格式打开一个文件用于追加。如果该文件存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件。

下图很好的总结了这几种模式:

#默认以文本读的方式打开
file_obj = open("file.txt", encoding="utf-8")
data = file_obj.read()
print(data)
file_obj.close()

file_obj = open("file.txt", "rt", encoding="utf-8")
data = file_obj.read()
print(data)
file_obj.close()

file_obj = open("file.txt", "w", encoding="utf-8")
data = file_obj.write("11111111111111111")
print(data)
file_obj.close()

file_obj = open("file2.txt", "w", encoding="utf-8")
data = file_obj.write("11111111111111111")
print(data)
file_obj.close()

file_obj = open("file2.txt", "a", encoding="utf-8")
data = file_obj.write("2222222222222")
print(data)
file_obj.close()

file_obj = open("file3.txt", "a+", encoding="utf-8")
file_obj.write("33333333333333333333333333")
file_obj.close()

file_obj = open("file.txt", encoding="utf-8")
data = file_obj.read()
file_obj.close()

1.1.2二进制的方式(打开):图片,音频,视频或者其他的非文本的文件。

#打开”IO.png“文件,并以二进制的方式读出,  b不能单独使用(b前的r不能省略)
file_obj = open("IO.png", "rb")
data = file_obj.read()
print(data)
#关闭文件
file_obj.close()
#以二进制的方式写入文件”psb_copy.jpg“
file_obj = open("psb_copy.jpg", "wb")
file_obj.write(data)
#关闭文件
file_obj.close()

注意:“IO.png”文件中,以存入了一张照片。

2.文件的操作

以文本方式写入的文件, 无需指定编码 以二进制方式写入文件,写入的内容要 求为bytes,所以通过str.encode('utf-8')来返回 bytes

1.2.1 文件写操作:

write()方法 f.write("hello world") #向目标文本文 件写入一行字符串

f.write("hello world".encode("utf-8")) # 向目标二进制文件写入一行字符串

1.2.2文件写操作:

writelines()方法写入 文件的字符串序列。

seq = ["hello world 1\n", "nihao wohao 2"] f.writelines( seq ) 7/15

1.2.3 文件读操作:

read()方法从文件读取指定的字节数,如果未给定或为负则读取所有。

ret = f.read() #默认全部读出 ret = f.read(5) #读出指定长度字符

1.2.4 文件读操作:

readline()方法可以读 出一行数据 ret = f.readline() #读取一行

注意:有个很像的 readlines()方法 ret = f.readlines() #返回的是一个列 表,且返回的是你读取的字符所在行的整个内容,但是当数据较大时,这样的用法会很占 用内存。

3.使用File操作文件

3.1File对象的介绍

File对象中的属性信息如下表所示。

File对象中的属性信息

属性 描述
file.closed 如果文件已关闭返回True;否则返回False
file.mode 返回打开文件的访问模式
file.name 返回文件的名称

在Python程序中,对象File时通过内置函数实现对文件操作的,其中常用的内置函数如下。

File对象中的内置函数

函数 功能
file.close() 关闭文件,关闭文件后不能再进行读写操作
file.flush() 刷新文件内部缓冲区,直接把内部缓冲区的数据写入文件,而不是被动的等待输出缓冲区写入。
file.fileno() 返回一个整形的文件描述,可以用在如os模块的read方法等一些底层操作上
file.isatty() 如果文件连接到一个终端设备返回True,否则返回False
file.next() 返回文件下一行
file.read([size]) 从文件读取指定的字节数,如果为给定或者为负值,则读取所有字节
file.readline([size]) 读取整行,包括“\n”
file.readlines([hint]) 读取所有行并返回列表,如给定hint>,返回总合大于约为hint字节的行,实际读取值可能比hine大,因为需要填充缓冲区
file.seek(offsrt[, whence]) 设置文件当前位置
file.tell 返回文件当前位置
file.truncate([size]) 截取文件,截取的字节通过size指定,默认为当前文件的位置
file.write(str) 将字符串写入文件,没有返回值
file.writeline(lines) 向文件写入一个序列字符串列表,如果需要换行,则要自己加入换行符。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • 如何利用Python 快速找到最大文件

    现在的电脑差不多都是固态硬盘了,速度很快,但容量不会太大,经常会出现磁盘空间不足的情况,怎么办,删除那些不重要的最大的文件是最有效的办法. 那么如何用找到最大的文件呢?比如说找到最大的前 10 个文件? 思路:我们遍历目录,将文件路径和文件大小作为生成器返回,然后插入大小为 10 的大顶堆,最后将大顶堆的内容打印即可. 借助 Python,代码很简洁: import os import time from os.path import join, getsize from heapq impor

  • Python批量修改文件名的方式详解

    目录 批量修改文件名(保留后缀) 批量修改文件名(全改) 读取文件下的所有文件名 总结 批量修改文件名(保留后缀) 这种方法,保留了文件原本的后缀.这里主要演示的是对图片名的修改. # 批量修改文件名 # 批量修改图片文件名 import os import re import sys path = 'F:\Temp\ZZ' fileList = os.listdir(path) # 待修改文件夹 print("修改前:"+str(fileList)) # 输出文件夹中包含的文件 cu

  • python 文件下载之断点续传的实现

    目录 1.前序 2.技术原理 2.1 Content-Range 2.2 Range 3. 代码实现 1.前序 当下载突然断开后,断点续传就需要了,继续前面下载的内容下载.解决了不需要重复下载 2.技术原理 HTTP/1.1 开始支持断点续传,一般断点下载会用到 Range 和 Content-Range 实体头 Range是请求头,Content-Range是响应头 2.1 Content-Range 用于响应头中 语法: Content-Length: <length> 2.2 Range

  • 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.使用open()函数打开文件夹 2.文件的操作 3.使用File操作文件 3.1File对象的介绍 总结 1.使用open()函数打开文件夹 在读取一个文件的内容之前,需要先打开这个文件.在Python程序中可以通过内置函数open()来打开一个文件程序中,,并用相关的方法读或写文件文件中的内容以供程序的处理和使用,同时可以将文件看作Python中的一种数据类型.是用函数open()的语法格式如下. open(filename, mode='r', buffering=None, en

  • Python文件读写open函数详解

    前言: open()函数的定义:def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True) 常用的参数有 file.mode.encoding file是文件名称, mode是文件的打开方式.encoding是文件编码格式 mode常见的有 只读模式®.写入模式(w).追加模式(a).读写模式(r+/w+/a+) r+要求文件必须存在:锚点置于末行末位字符处 w+

  • Go语言文件读写操作案例详解

    目录 基本介绍 文件基本操作 读操作 写操作 写操作案例 查看文件或目录是否存在 拷贝文件 基本介绍 文件,对我们并不陌生,文件是数据源(保存数据的地方)的 一种 输入流和输出流 文件在程序中是以流的形式来操作的 流:数据在数据源(文件)和程序(内存)之间经历的路径 输入流:数据从文件到内存的路径 输出流:数据从内存到文件的路径 os.File封装所有文件相关操作,File是一个结构体 文件基本操作 读操作 package main import ( "bufio" "fmt

  • Python发送邮件测试报告操作实例详解

    本文实例讲述了Python发送邮件测试报告操作.分享给大家供大家参考,具体如下: 发邮件需要用到python两个模块,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email模块主要负责构造邮件.其中MIMEText()定义邮件正文,Header()定义邮件标题.MIMEMulipart模块构造带附件 发送HTML格式的邮件: send_email_html.py import smtplib from email.mim

  • Python文件打开方式实例详解【a、a+、r+、w+区别】

    本文实例讲述了Python文件打开方式.分享给大家供大家参考,具体如下: 第一步 排除文件打开方式错误: r只读,r+读写,不创建 w新建只写,w+新建读写,二者都会将文件内容清零 (以w方式打开,不能读出.w+可读写) w+与r+区别: r+:可读可写,若文件不存在,报错:w+: 可读可写,若文件不存在,创建 r+与a+区别: fd = open("1.txt",'w+') fd.write('123') fd = open("1.txt",'r+') fd.wr

  • Android编程之在SD卡上进行文件读写操作实例详解

    本文实例讲述了Android编程之在SD卡上进行文件读写操作的方法.分享给大家供大家参考,具体如下: 很多知识只有真正理解掌握之后才能运用自如,举一反三.对Java中的文件操作和android系统SD卡里面的文件操作,你觉得有区别吗,显然没有本质区别,如果勉强说有,那也是不足为道滴,但我们在实际运用中却要注意如下几点,不然问题会缠上你. 1.首先想要对android系统SD卡里文件操作需要添加使用权限: android系统是不会让外来程序随意动自己内存的,如果没有许可证,不好意思,不准你动我地盘

  • Python文件如何引入?详解引入Python文件步骤

    python基本语法--引入Python文件 1.新建python文件 :在同目录lib下创建mylib.py和loadlib.py两个文件 2.在mylib.py文件中创建一个Hello的类 并且给这个类添加一个sayHello的方法,让她输出hello python 3.在loadlib.py 文件中引入mylib import mylib 4.在loadlib中调用引用过来的python文件mylib.py中的Hello方法 这时import mylib中的mylib就相当与一个命名空间

  • Python面向对象封装操作案例详解

    本文实例讲述了Python面向对象封装操作.分享给大家供大家参考,具体如下: 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类的内部 02. 小明爱跑步 需求 小明 体重 75.0 公斤 小明每次 跑步 会减肥 0.5 公斤 小明每次 吃东西 体重增加 1 公斤 提示:在 对象的方法内部,是可以 直接访问

  • Python面向对象封装操作案例详解 II

    本文实例讲述了Python面向对象封装操作.分享给大家供大家参考,具体如下: 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类的内部 一个对象的 属性 可以是 另外一个类创建的对象 01. 士兵突击 需求 士兵 许三多 有一把 AK47 士兵 可以 开火 枪 能够 发射 子弹 枪 装填 装填子弹 -- 增加子弹数量

随机推荐