python基础之文件操作

1、打开文件

open()函数简介 :

打开文件使用open函数,可以打开一个已经存在的文件,如果没有这个文件的话,会创建一个新文件

完整的语法格式为:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明:(一般只会用到前三个)
file: 必需,文件路径(相对或者绝对路径)。
mode: 可选,文件打开模式
encoding: 一般使用utf8
buffering: 设置缓冲
errors: 报错级别
newline: 区分换行符
closefd: 传入的file参数类型
opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。
  • mode模式
'''
文件打开模式
r        以只读方式打开文件,文件的指针将会放在文件的开头,这是默认模式。
w        打开一个文件只用于写入。如果该文件已经存在则将其覆盖,如果不存在,创建新文件。
r+       打开一个文件用于读写,文件指针将会被放在文件的开头。
w+       打开一个文件用于读写。如果该文件已经存在则将其覆盖,如果不存在,创建新文件。
rb+      以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+      以二进制格式打开一个文件用于读写。如果该文件已经存在则将其覆盖,如果不存在,创建新文件。
a        打开一个文件用于追加,如果文件已经存在,文件指针将会放在文件的结尾,也就是说,新的内容将会被写到已有内容之后。
         如果文件不存在,创建新的文件进行写入。
'''
  • encoding编码类型

encoding一般默认是gbk,为中文编码,但通常都是以utf-8写入和读取最好在打开文件时指定编码类型

打开文件,没有的话自动创建一个文件

File1_Object = open('Text1.txt', 'w', encoding='utf-8')  # 返会一个文件对象赋值给File1_Object

此时左边工程栏会出现一个文件

2、写入

默认形式写入

File1_Object = open('Text1.txt', 'w', encoding='utf-8')
File1_Object.write('始知相忆深\n')  # 往该对象里写入内容
File1_Object.write('直道相思了无益,未妨惆怅是清狂\n')
File1_Object.close()  # 保存并关闭

此时打开文件,会有以下内容

以二进制的形式打开并写入

File2_Object = open('Text2.txt', 'wb')
File2_Object.write('我喜欢的人要心若明镜,眼若星辰,便是看尽人间丑恶,也依然心怀善良,优雅从容!\n'.encode('utf-8'))
# .encode('utf-8')    str->bytes
# 不加的话会报错   TypeError: a bytes-like object is required, not 'str'
File2_Object.close()


注意,以二进制形式操作文件,不管是写入和读取都不加encoding,否则会报错
如果加encoding='utf-8'的话,会有以下错误显示:

不加encoding的情况

# 后面不加encoding='utf-8',默认为gbk
File5_Object = open('Text3.txt', 'w')
File5_Object.write('将头发梳成大人摸样\n')
File5_Object.write('换上一身帅气西装\n')
File5_Object.write('等回来见你一定比想象美\n')
File5_Object.close()

此时打开Text3会有以下显示:

点击箭头指向位置,将会显示出内容:

3、追加

一般追加形式

File3_Object = open('Text1.txt', 'a', encoding='utf-8')
File3_Object.write('我喜欢的人要心若明镜,眼若星辰,便是看尽人间丑恶,也依然心怀善良,优雅从容!\n')
File3_Object.close()

此时Text1里面的内容为:

对Text2进行追加:

File2_Object = open('Text2.txt', mode='ab')
File2_Object.write('处处相思苦!'.encode('utf-8'))
File2_Object.close()

对Text3进行追加

如果此时加了encoding=‘uft-8'

File5_Object = open('Text3.txt', 'a', encoding='utf-8')
File5_Object.write('纱窗醉梦中')
File5_Object.close()

打开文件Text3

仍会显示异常,此时需点击箭头指向位置,会显示:

点击utf-8的话会显示:

所以当文件第一次打开写入时没有加encoding时,后续进行操作也不要加,不然会有乱码,加了encoding的话,编码格式后续也不要改变。
此时删掉encoding=‘utf-8',文件内容为正常

File5_Object = open('Text3.txt', 'a')
File5_Object.write('纱窗醉梦中')
File5_Object.close()

4、读文件

read(),将文件的内容全部读取出来。

File4_Object = open('Text1.txt', 'r', encoding='utf-8')
print(File4_Object.read())
File4_Object.close()

read(num),传入一个参数,表示读取指定字符个数

File4_Object = open('Text1.txt', 'r', encoding='utf-8')
print(File4_Object.read(4))  # 只读取前四个字符
print(File4_Object.read())   # 第二次读取将从上一次读取的位置继续读取
File4_Object.close()
print()

readline() 一次性读一行

File4_Object = open('Text3.txt', 'r')
print(File4_Object.readline())
print(File4_Object.readline())  # 第二次读取将从第二行开始
print(File4_Object.readline())
File4_Object.close()

readlines() 按行读取,一次性读取所有内容,返回一个列表,每一行内容作为一个元素

File5_Object = open('Text3.txt', mode='r')
print(File5_Object.readlines())
File5_Object.close()

以二进制形式读文件

File5_Object = open('Text2.txt', 'rb')
content = File5_Object.read()
print(content.decode('utf-8'))  # decode解码
# 由于原来Text2文件时以二进制形式打开并写入的,此时解码就直接用utf-8,不能用gbk
File5_Object.close()

File5_Object = open('Text3.txt', 'rb')
content = File5_Object.readline() # 只读取一行
print(content.decode('gbk'))
# 而Text3第一次创建并写入时是以默认gbk的形式写入的,此时只能用gbk解码
File5_Object.close()

with上下文管理对象,可以自动释放打开的对象,防止忘记close()操作

with open('Text2.txt', 'r', encoding='utf-8')as File5_Object:
    print(File5_Object.read())

5、文件拷贝

小文件

def Copy_File():
    # 接收用户输入的文件名
    Original_File = input('请输入要备份的文件名:')
    New_File_Name = Original_File.split('.')  #分割接收到的文件名
    New_File = New_File_Name[0] + '_copy.' + New_File_Name[1]
    Original_File_Object = open(Original_File, mode='r', encoding='utf-8')  # 以只读的模式打开之前的文件
    New_File_Object = open(New_File, mode='w', encoding='utf-8')  # 以写入的方式打开新备份的文件
    New_File_Object.write(Original_File_Object.read())
    Original_File_Object.close()
    New_File_Object.close()
    pass
Copy_File()
New_File = open('Text_copy.txt', mode='r', encoding='utf-8')
print(New_File.readlines())
New_File.close()

大文件

def Copy_Big_File():
    # 接收用户输入的文件名
    Original_File = input('请输入要备份的文件名:')
    New_File_Name = Original_File.split('.')  #分割接收到的文件名
    New_File = New_File_Name[0] + '_copy.' + New_File_Name[1]
    try:
        with open(Original_File, mode='r', encoding='utf-8')as Original_File_Object, open(New_File, mode='r', encoding='utf-8')as New_File_Object:
            while True:
                connect = Original_File_Object.read(1024)
                New_File_Object.read(connect)
                if len(connect) < 1024:
                    break
                    pass
                pass
            pass
        pass
    except Exception as msg:
        print(msg)
        pass
    pass
Copy_Big_File()

6、tell()

文件定位,指的是当前文件指针读取到的位置,光标位置。在读写文件的过程中,如果想知道当前的位置,可以使用tell()来获取

File_Object = open('Text1.txt', mode='r', encoding='utf-8')
print(File_Object.read(2))
print(File_Object.tell())
print(File_Object.read(5))
print(File_Object.tell())
File_Object.close()
# utf-8编码格式中每个汉字占3个字节
print()

注解:先读取两个汉字,print输出 “始知”,此时光标位置为6说明utf-8编码格式中每个汉字占3个字节,之后再读取5个,而只显示了相忆深并换行打印了直,是因为还有一个换行符,此时光标定位到20,又能说明转义符在utf-8编码格式中占2个字节。

7、truncate(size)

可以对源文件进行截取操作,截取size字节大小数据,截取之后源文件将被修改,里面只剩下截取的数据

File_Object = open('Text1.txt', mode='r', encoding='utf-8')
print('截取之前文件里的内容:')
print(File_Object.read())
File_Object.close()
File_Object = open('Text1.txt', mode='r+', encoding='utf-8')
# r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
print()
File_Object.truncate(12)  # 执行完此行代码后源文件会被修改
print(File_Object.tell())
print('截取之后文件里的内容:')
print(File_Object.read())
print(File_Object.tell())
File_Object.close()
print()

光标第一次位置指向开头(r+),截取之后(12个字节),指向文件末尾12

  • 截取之前Text1为以下内容

  • 截取后为

8、seek()

在操作文件的过程,可定位到其他位置进行操作 seek(offset,from)有2个参数,offset指偏移字节量,负数是往前偏移,正数是往后偏移。from位置,0表示文件开头,1表示当前位置,2表示文件末尾

File_Object = open('Text1.txt', mode='rb')
              print(File_Object.read(15).decode('utf-8'))
              print(File_Object.tell()) File_Object.seek(-6, 1)
              print(File_Object.tell())
              print(File_Object.read(6).decode('utf-8')) File_Object.close()
              ''' 使用seek()函数时,有时候会报错为  “io.UnsupportedOperation: can't do
              nonzero cur-relative seeks”
              照理说,按照seek()方法的格式file.seek(offset,whence),后面的1代表从当前位置开始算起进行偏移,那又为什么报错呢?
              这是因为,在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始计算相对位置,从文件尾计算时就会引发异常。 将
              f=open("aaa.txt","r+")  改成 f = open("aaa.txt","rb")   就可以了 '''

对于文件操作更系统实战的操作,读者可参考

https://www.jb51.net/article/149035.htm

读者可根据里面的流程分析对基础进行巩固。

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

(0)

相关推荐

  • Python: glob匹配文件的操作

    glob模块实例详解 glob的应用场景是要寻找一系列(符合特定规则)文件名. glob模块是最简单的模块之一,内容非常少.用它可以查找符合特定规则的文件路径名.查找文件只用到三个匹配符:"*", "?", "[]". "*"匹配0个或多个字符: "?"匹配单个字符: "[ ]"匹配指定范围内的字符,如:[0-9]匹配数字. 假设以下例子目录是这样的. dir dir/file.txt

  • Python文件操作及内置函数flush原理解析

    1.打开文件得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 示例文件 '你好呀' 我是于超 嗯 再见 文件操作基本流程 f=open('chenli',encoding='utf-8') first_line=f.readline() print('第一行是:',first_line) print('我是分割线'.center(9,'-')) #9代表字符串总共9长度 data=f.read() #读取所有内容 print(data) #不指定打开编码,即python解释

  • Python通过m3u8文件下载合并ts视频的操作

    前段时间,接到一个需求,要求下载某一个网站的视频,然后自己从网上查阅了相关的资料,在这里做一个总结. 1. m3u8文件 m3u8是苹果公司推出一种视频播放标准,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少I/o访问次数,一般存在服务器的内存中),通过m3u8解析出来路径,然后去请求,是现在比较流行的一种加载方式.目前,很多新闻视频网站都是采用这种模式去加载视频. M3U8文件是指UTF-8编码格式的M3U文件.M3U文件是记录了一个索引纯文本

  • 在 Python 中使用 7zip 备份文件的操作

    我在按照 Byte of python一步步的学习Python, 在学到'解决方案'的时候,原文的实例 "backup_ver1.py" 是用zip备份文件. 这里面我有几点不一样的地方: 我的电脑没有zip,我用的是7zip: 原文直接用'zip'命令备份,我直接使用7z命令报错. 使用7z命令备份之前,需要把7zip的安装目录添加到系统环境变量Path中:这时候我可以在CMD中执行7z,但是在python中还是报错,"7z is not recognized as an

  • 利用python进行文件操作

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

  • python中操作文件的模块的方法总结

    在python中操作文件算是一个基本操作,但是选对了模块会让我们的效率大大提升.本篇整理了两种模块的常用方法,分别是os模块和shutil模块.相信这两种模块大家在之间的学习中有所涉及,那么关于具体的文件操作部分,我们一起往下看看都有哪些方法和实例吧. 本教程操作环境:windows7系统.Python3版.Dell G3电脑. Python对文件操作采用的统一步骤是:打开-操作-关闭. 一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法 1.得到当前工作目录,即

  • Python文件的操作示例的详细讲解

    1. 文件的读写原理: 文件的读写称为I/O操作. 操作原理: .py文件是用解释器去运行,调用OS操作系统的资源,去操作磁盘上的文件. 操作流程: 在去操作一个文件的文件的时候,首先打开或者创建一个文件,进行读或者写. 读: 从文件拿到内存当中来 写:把内存的文件放入文件中 最后进行关闭资源. 内置函数: open() 可以创建或者打开一个文件 语法规则: file=open(filename [mode,encoding] 打开模式默认为只读 默认文本中的字符编码格式为gbk # 作者:互联

  • 详解Python利用configparser对配置文件进行读写操作

    简介 想写一个登录注册的demo,但是以前的demo数据都写在程序里面,每一关掉程序数据就没保存住.. 于是想着写到配置文件里好了 Python自身提供了一个Module - configparser,来进行对配置文件的读写 Configuration file parser. A configuration file consists of sections, lead by a "[section]" header, and followed by "name: valu

  • python基础_文件操作实现全文或单行替换的方法

    python修改文件时,使用w模式会将原本的文件清空/覆盖.可以先用读(r)的方式打开,写到内存中,然后再用写(w)的方式打开. 1.替换文本中的taste 为 tasting Yesterday when I was young 昨日当我年少轻狂 The taste of life was sweet 生命的滋味是甜的 As rain upon my tongue #将文件读取到内存中 with open("./fileread.txt","r",encoding

  • python基础之文件操作

    1.打开文件 open()函数简介 : 打开文件使用open函数,可以打开一个已经存在的文件,如果没有这个文件的话,会创建一个新文件 完整的语法格式为: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 参数说明:(一般只会用到前三个) file: 必需,文件路径(相对或者绝对路径). mode: 可选,文件打开模式 encoding: 一

  • Python基础之文件操作及光标移动详解

    目录 一.文件操作 1.文件的概念 2.代码打开文件的方式 二.文件读写模式 1.'r' 只读模式 read 2.'w' 只写模式 write 3.'a' 尾部追写模式 add 三.文件操作模式 1.t 文本模式 2.b 二进制模式 四.文件诸多方法 1.read() 2.for循环 3.line 4.readable 5.write 6.flush 五.文件内光标的移动 1.seek() 2.tell() 一.文件操作 1.文件的概念 1.文件就是计算机暴露给用户操作硬盘的快捷方式 2.计算机

  • python基础之文件操作和异常处理

    一.文件和异常 1.1从文件中读取数据 读取整个文件 读取文件先要创建一个文件,在程序的同一目录下. greet.txt "Hello World! Hello World! Hello World! Hello World!" with open('greet.txt') as file_object: contents=file_object.read() print(contents) 如果txt文件中有中文,输出出现乱码时,可以with open('greet.txt',enc

  • python基础之文件处理知识总结

    一.open()方法 python open()方法用于打开一个文件,并返回文件对象,在对文件处理的过程中都需要用到这个函数,如果文件无法打开,会抛出OSError. 注意:使用open()方法的时候一定到保证关闭文件对象,文件里面的内容才会被保存,关闭文件需要调用close()方法. open()方法常用的形式是接收两个参数:文件名(file)和模式(mode) 基本语法: open(file,mode='r') 完整的语法: open(file,mode='r',buffering=1,en

  • Python函数和文件操作详情

    目录 前言 一.函数 二.自定义函数 1.创建函数 2.调用函数 3.函数默认值 4.收集函数(可变函数) 5.全局与局部 6.匿名函数lambda 7.内嵌函数 三.常用内置函数 1.max和min 2.abs 3.round 4.pow 5.divmod 6.help 7.filter 8.map 四.文件 1.read()方法读取 2.readline()方法 3.readlines()方法 4.遍历文件对象读取 5.文件的写入 6.文件关闭 7.with方式 8.pickle 前言 本篇

  • 一文带你搞懂Python中的文件操作

    目录 一.文件的编码 二.文件的读取 2.1 open()打开函数 2.2 mode常用的三种基础访问模式 2.3 读操作相关方法 三.文件的写入 写操作快速入门 四.文件的追加 追加写入操作快速入门 五.文件操作综合案例 一.文件的编码 计算机中有许多可用编码: UTF-8 GBK Big5 等 UTF-8是目前全球通用的编码格式 除非有特殊需求,否则,一律以UTF-8格式进行文件编码即可. 二.文件的读取 2.1 open()打开函数 注意:此时的f是open函数的文件对象,对象是Pytho

  • Python字符串和文件操作常用函数分析

    本文实例分析了Python字符串和文件操作常用函数.分享给大家供大家参考.具体如下: # -*- coding: UTF-8 -*- ''' Created on 2010-12-27 @author: sumory ''' import itertools def a_containsAnyOf_b(seq,aset): '''判断seq中是否含有aset里的一个或者多个项 seq可以是字符串或者列表 aset应该是字符串或者列表''' for item in itertools.ifilte

  • python解析xml文件操作实例

    本文实例讲述了python解析xml文件操作的实现方法.分享给大家供大家参考.具体方法如下: xml文件内容如下: <?xml version="1.0" ?> <!--Simple xml document__chapter 8--> <book> <title> sample xml thing </title> <author> <name> <first> ma </first

  • python开发之文件操作用法实例

    本文实例讲述了python开发之文件操作用法.分享给大家供大家参考,具体如下: 先来看看官方API:os-Miscellaneous operating system interfaces 下面是我做的demo: import re import os import time #图片文件路径 image_path = 'E:\\test\\20130627_140132Hongten.jpg' #文件夹路径 dir_path = 'E:\\test\\hongten' #文件路径 file_ab

随机推荐