集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > Python >

成都Python前景怎么样?三步搞定Python中的文件操作

发布者: 成都达内     浏览次数:     发布时间:2020-09-09 11:19:21

当程序运行时,变量是保存数据的好方法,但变量、序列以及对象中存储的数据是暂时的,程序结束后就会丢失,如果希望程序结束后数据仍然保持,就需要将数据保存到文件中。...

  当程序运行时,变量是保存数据的好方法,但变量、序列以及对象中存储的数据是暂时的,程序结束后就会丢失,如果希望程序结束后数据仍然保持,就需要将数据保存到文件中。

  Python 提供了内置的文件对象,以及对文件、目录进行操作的内置模块,通过这些技术可以很方便地将数据保存到文件(如文本文件等)中。

  一、文件的概念

  在计算机中,文件是以二进制的方式保存在磁盘上的。

  文件分为文本文件和二进制文件。

  1、文本文件

  可以使用文本编辑软件查看,本质上还是二进制文件,例如:python 的源程序。

  2、二进制文件

  保存的内容不是给人直接阅读的,而是提供给其他软件使用的。例如:图片文件、音频文件、视频文件等等,二进制文件不能使用文本编辑软件查看。

  Python 中,对文件的操作有很多种,常见的操作包括创建、删除、修改权限、读取、写入等,这些操作可大致分为以下 2 类:

  删除、修改权限:作用于文件本身,属于系统级操作。

  写入、读取:是文件最常用的操作,作用于文件的内容,属于应用级操作。

  二、文件的基本操作

  1、操作文件的步骤

  文件的应用级操作可以分为以下 3 步,每一步都需要借助对应的函数实现:

  打开文件:使用 open() 函数,该函数会返回一个文件对象;

  对已打开文件做读/写操作:读取文件内容可使用 read()、readline() 以及 readlines() 函数;向文件中写入内容,可以使用 write() 函数。

  关闭文件:完成对文件的读/写操作之后,最后需要关闭文件,可以使用 close() 函数。

  2、打开文件的方式

  在 Python 中,如果想要操作文件,首先需要创建或者打开指定的文件,并创建一个文件对象,而这些工作可以通过内置的 open() 函数实现。

  语法如下:

  file = open(file_name [, mode='r' [ , buffering=-1 [ , encoding = None ]]])

  file:表示要创建的文件对象。

  file_name:要创建或打开文件的文件名称。

  mode:用于指定文件的打开模式。默认以只读(r)模式打开文件。

  buffering:用于指定对文件做读写操作时,是否使用缓冲区。

  encoding:手动设定打开文件时所使用的编码格式,不同平台的 ecoding 参数值也不同,以 Windows 为例,其默认为 cp936(实际上就是 GBK 编码)。

  打开文件的常用模式

  模式说明

  成都Python前景怎么样?三步搞定Python中的文件操作

  成都Python前景怎么样?三步搞定Python中的文件操作

  open()是否需要缓冲区

  通常情况下、建议大家在使用 open() 函数时打开缓冲区,即不需要修改 buffing 参数的值。

  如果 buffing 参数的值为 0(或者 False),则表示在打开指定文件时不使用缓冲区;如果 buffing 参数值为大于 1 的整数,该整数用于指定缓冲区的大小(单位是字节);如果 buffing 参数的值为负数,则代表使用默认的缓冲区大小。

  目前为止计算机内存的 I/O 速度仍远远高于计算机外设(例如键盘、鼠标、硬盘等)的 I/O 速度,如果不使用缓冲区,则程序在执行 I/O 操作时,内存和外设就必须进行同步读写操作,也就是说,内存必须等待外设输入(输出)一个字节之后,才能再次输出(输入)一个字节。这意味着,内存中的程序大部分时间都处于等待状态。

  而如果使用缓冲区,则程序在执行输出操作时,会先将所有数据都输出到缓冲区中,然后继续执行其它操作,缓冲区中的数据会有外设自行读取处理;同样,当程序执行输入操作时,会先等外设将数据读入缓冲区中,无需同外设做同步读写操作。

  3、read 方法 —— 读取文件

  read 方法可以一次性读入并返回文件的所有内容。

  read() 函数的基本语法格式如下:

  file.read([size])

  其中,file 表示已打开的文件对象;size 作为一个可选参数,用于指定一次最多可读取的字符(字节)个数,如果省略,则默认一次性读取所有内容。

  如果忘记关闭文件,会造成系统资源消耗,而且会影响到后续对文件的访问。

  注意:read 方法执行后,会把文件指针移动到文件的末尾。

  示例:

  # 1. 打开 - 文件名需要注意大小写

  file = open("README")

  # 2. 读取

  text = file.read()

  print(text)

  # 3. 关闭

  file.close()

  在开发中,通常会先编写打开和关闭的代码,再编写中间针对文件的读/写操作!

  4、按行读取文件内容

  read 方法默认会把文件的所有内容一次性读取到内存。

  如果文件太大,对内存的占用会非常严重。

  readline 方法可以一次读取一行内容,包含最后的换行符“\n”。方法执行后,会把文件指针移动到下一行,准备再次读取。

  file.readline([size])

  其中,file 为打开的文件对象;size 为可选参数,用于指定读取每一行时,一次最多读取的字符(字节)数。

  读取大文件的正确姿势

  # 打开文件

  file = open("README")

  while True:

  # 读取一行内容

  text = file.readline()

  # 判断是否读到内容

  if not text:

  break

  # 每读取一行的末尾已经有了一个 `\n`

  print(text, end="")

  # 关闭文件

  file.close()

  示例:

  小文件复制

  # 1. 打开文件

  file_read = open("README")

  file_write = open("README[复件]", "w")

  # 2. 读取并写入文件

  text = file_read.read()

  file_write.write(text)

  # 3. 关闭文件

  file_read.close()

  file_write.close()

  大文件复制

  # 1. 打开文件

  file_read = open("README")

  file_write = open("README[复件]", "w")

  # 2. 读取并写入文件

  while True:

  # 每次读取一行

  text = file_read.readline()

  # 判断是否读取到内容

  if not text:

  break

  file_write.write(text)

  # 3. 关闭文件

  file_read.close()

  file_write.close()

  对于按行来读取文件,还有一个 readlines() 函数。

  readlines() 函数用于读取文件中的所有行,它和调用不指定 size 参数的 read() 函数类似,只不过该函数返回是一个字符串列表,其中每个元素为文件中的一行内容。

  和 readline() 函数一样,readlines() 函数在读取每一行时,会连同行尾的换行符一块读取。

  5、文件指针

  文件指针可以理解为一个标记,它标记从哪个位置开始读取数据。

  第一次打开文件时,通常文件指针会指向文件的开始位置,当执行了 read 方法后,文件指针默认情况下会移动到读取内容的末尾。

  如果执行了一次 read 方法,读取了所有内容,那么再次调用 read 方法,还能够获得到内容吗?

  答案是不能,第一次读取之后,文件指针移动到了文件末尾,再次调用不会读取到任何的内容。

  # 首先在 README 文件中写了8个1

  # 1. 打开 - 文件名需要注意大小写

  file = open("README")

  # 2. 读取

  text = file.read()

  print(text)

  text = file.read()

  print("-" * 10)

  print(text)

  # 3. 关闭

  file.close()

  #1111111

  #----------

  #

  6、向文件中写入数据

  Python 中的文件对象提供了 write() 函数,可以向文件中写入指定内容。该函数的语法格式如下:

  file.write(string)

  在写入文件完成后,一定要调用 close() 函数将打开的文件关闭,否则写入的内容不会保存到文件中。

  这是因为,当我们在写入文件内容时,操作系统不会立刻把数据写入磁盘,而是先缓存起来,只有调用 close() 函数时,操作系统才会保证把没有写入的数据全部写入磁盘文件中。

  写入文件示例:

  # 打开文件

  f = open("README", "w")

  f.write("hello python!\n")

  f.write("今天天气真好")

  # 关闭文件

  f.close()

  如果向文件写入数据后,不想马上关闭文件,也可以调用文件对象提供的 flush() 函数,它可以实现将缓冲区的数据写入文件中。

  f = open("a.txt", 'w')

  f.write("写入一行新数据")

  f.flush()

  三、文件/目录的常用管理操作

  在终端 / 文件浏览器中可以执行常规的文件 / 目录管理操作,例如:创建、重命名、删除、改变路径、查看目录内容等等。

  在 Python 中,如果希望通过程序实现上述功能,需要导入os模块。

  成都Python前景怎么样?三步搞定Python中的文件操作

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56