很多软件都会有有对文件处理的功能。今天我们就来学习文件处理。

文件处理

打开文件时,需要指定文件路径和以何等方式打开文件,打开后,可以将结果赋值给一个变量,这个变量我们称为句柄。这样我们就可以通过这个句柄对此文件进行操作。使用后关闭。

  1. # f=open('文件路径','打开方式',encoding='字符编码') #f为文件句柄
  2. # print('+++++>1',f.read()) #输出全部
  3. # print(type(data))
  4. # print('+++++>2',f.read()) #空
  5. # print('+++++>3',f.read()) #空
  6. # f.close() #文件关闭
  7. # print(f) #可用
  8. # f.read() #不可用
  9. # del f #仅删除f句柄

回收资源
1 f.close():一定要做,关闭操作系统打开的文件,即回收操作系统的资源
2 del f:没必要做,因为在python程序运行完毕后,会自动清理与该程序有关的所有内存空间

文件打开模式

打开文件的模式有:

r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】

  1. #文本文件:只读模式,文件不存在报错
  2. f=open('aaaa.py','r')
  3. print(f.read()) #读所有
  4. print(f.readline(),end='') #读行
  5. print(f.readlines()) #读所有将每行放到数组中
  6. print(f.readable()) #判断是否可读
  7. print(f.writable()) #False
  8. f.close() #关闭

w,只写模式【不可读;不存在则创建;存在则清空内容】

  1. #文本文件:只写模式,文件不存在则创建空文件,文件存在则清空
  2. f=open('new.txt','w')
  3. f.write('1111111\n') #写入
  4. f.writelines(['22222\n','3333\n','444444\n']) #写入三行
  5. print(f.writable()) #判断是否可写入
  6. f.close()

a, 追加模式【可读;   不存在则创建;存在则只追加内容】

  1. #文本文件:只追加写模式,文件不存在则创建,文件存在可追加内容
  2. # f=open('new_2','a',encoding='utf-8')
  3. # print(f.readable()) #False
  4. # print(f.writable()) #True
  5.  
  6. # f.write('33333\n')
  7. # f.write('44444\n')
  8. # f.writelines(['5555\n','6666\n'])
  9.  
  10. # f.close() 

"+" 表示可以同时读写某个文件

r+, 读写【可读,可写】

  1. #可写可读 打开文件的时候文件就为空,写的是任意内容,读的是刚刚写进去的内容
  2. #要想读,先移动光标
  3. #读的光标和写的光标是两回事
  4. f = open('复习.py','w+',encoding='utf-8')
  5. f.write('12237yuiayi')
  6. #seek 制定光标的位置在0位置
  7. f.seek(0)
  8. print(f.read(3))
  9. f.write('kahkshldkhd')
  10. print('***',f.read())
  11. f.close()

w+,写读【可读,可写】

  1. #可读可写
  2. f = open('复习.py','r+',encoding='utf-8')
  3. print(f.read())
  4. f.write('\najshdjkdjk')
  5. f.close()

a+, 写读【可读,可写】

  1. #追加可读
  2. f = open('复习2.py','a+',encoding='utf-8')
  3. f.seek(0)
  4. print(f.read())

"b"表示以字节的方式操作

rb

  1. #rb
  2. f=open('aaaa.py','rb')
  3. print(f.read().decode('utf-8'))
  4.  
  5. f=open('1.jpg','rb')
  6. data=f.read()

wb

  1. #wb
  2. f=open('2.jpg','wb')
  3. f.write(data)
  4. f=open('new_3.txt','wb')
  5. f.write('aaaaa\n'.encode('utf-8'))

ab

  1. #ab
  2. f=open('new_3.txt','ab')
  3. f.write('aaaaa\n'.encode('utf-8'))

此方式的操作可以对一些非字节文件做操作比如说图片,视频等任意文件。

文件的光标移动

read(3):

1. 文件打开方式为文本模式时,代表读取3个字符

2. 文件打开方式为b模式时,代表读取3个字节

用只读方式和只写方式打开文件光标都在首,追写方式打开在尾。想要自己移动光标只能借助seek(光标位置)方法实现

上下文管理

  1. #上下文管理
  2. with open('aaaa.py','r',encoding='utf-8') as read_f,\
  3. open('aaaa_new.py','w',encoding='utf-8') as write_f:
  4. #一行太长可以用\来将一行分成两行或多行但本质还是一行
  5. data=read_f.read()
  6. write_f.write(data)
  7.  
  8. #不需要关闭(即不用close)此格式会自动关闭
  9. #with open() as 句柄,open() as 句柄 : #可以一次打开多个
  10. # 对文件的操作 

循环每一行

  1. with open('a.txt','r',encoding='utf-8') as f:
  2. while True:
  3. line=f.readline()
  4. if not line:break
  5. print(line,end='')
  6.  
  7. lines=f.readlines() #只适用于小文件
  8. print(lines)
  9.  
  10. data=f.read()
  11. print(type(data))
  12.  
  13. for line in f: #推荐使用
  14. print(line,end='')

文件的修改

  1. #方式一:只适用于小文件
  2. import os #导入os模块
  3. with open('a.txt','r',encoding='utf-8') as read_f,\
  4. open('a.txt.swap','w',encoding='utf-8') as write_f:
  5. data=read_f.read()
  6. write_f.write(data.replace('alex_SB','alex_BSB'))
  7.  
  8. os.remove('a.txt') #移除
  9. os.rename('a.txt.swap','a.txt') #重命名
  10.  
  11. #方式二:
  12. import os
  13. with open('a.txt','r',encoding='utf-8') as read_f,\
  14. open('a.txt.swap','w',encoding='utf-8') as write_f:
  15. for line in read_f:
  16. write_f.write(line.replace('alex_BSB','BB_alex_SB'))
  17.  
  18. os.remove('a.txt')
  19. os.rename('a.txt.swap','a.txt')
  20.  
  21. #OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作。

python基础(9):文件处理的更多相关文章

  1. python基础之文件读写

    python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...

  2. 第二篇:python基础之文件读写

    python基础之文件读写   python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使 ...

  3. 七. Python基础(7)--文件的读写

    七. Python基础(7)--文件的读写 1 ● 文件读取的知识补充 f = open('file', encoding = 'utf-8') content1 = f.read() content ...

  4. python基础篇(文件操作)

    Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...

  5. Python基础_文件的的处理及异常处理

    今天主要讲讲文件读写及异常处理. 一.文件操作 1.1 文件的创建及读 打开文件 open 函数  open(file,[option]) file 是要打开的文件 option是可选择的参数文件的打 ...

  6. 【穿插】Python基础之文件、文件夹的创建,对上一期代码进行优化

    在上一期妹子图的爬虫教程中,我们将图片都保存在了代码当前目录下,这样并不便于浏览,我们应该将同一个模特的图片都放在一个文件夹中. 今天我们就简单讲一下Python下如何创建文件.文件夹,今后就可以用上 ...

  7. python基础之文件处理

    读和写文件 读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直 ...

  8. Python基础、文件处理

    一.概述 Python中操作文件是通过file对象来处理的,步骤: 指定文件的路径.操作的模式 对文件进行操作,读或写操作 关闭文件对象 f = open( '文件路径','访问模式') # 打开文件 ...

  9. python基础4文件操作

    在磁盘上读取文件的 功能都是由操作系统来实现的,不允许普通的程序直接操作磁盘,所以读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据( ...

  10. Python基础之文件处理、函数、内置函数 (三)

    内置函数 一 详细见python文档,请点击 文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = file('文件路径', '模式') 注:python中打开 ...

随机推荐

  1. 基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)

    前言: 本章介绍自己写的基于java.util.logging的轻量级日志记录库(baseLog). 该版本的日志记录库犹如其名,baseLog,是个实现日志记录基本功能的小库,适合小型项目使用,方便 ...

  2. Vue 爬坑之路(四)—— 与 Vuex 的第一次接触

    在 Vue.js 的项目中,如果项目结构简单, 父子组件之间的数据传递可以使用  props 或者 $emit 等方式 http://www.cnblogs.com/wisewrong/p/62660 ...

  3. [codeforces631E]Product Sum

    E. Product Sum time limit per test: 1 second memory limit per test: 256 megabytes input:standard inp ...

  4. 基于Petri网的工作流分析和移植

    基于Petri网的工作流分析和移植 一.前言 在实际应用场景,包括PEC的订单流程从下订单到订单派送一直到订单完成都是按照一系列预先规定好的工作流策略进行的. 通常情况下如果是采用面向过程的编程方法, ...

  5. python网络爬虫之scrapy 工程创建以及原理介绍

    执行scrapy startproject XXXX的命令,就会在对应的目录下生成工程 在pycharm中打开此工程目录:并在Run中选择Edit Configuration 点击+创建一个Pytho ...

  6. Python Trick

    一. 查询函数参数 import inspect print(inspect.getargspec(func)) 二. 查询对象属性 使用 dir() 查询对象属性 使用内置函数 hasattr(ob ...

  7. 简单轻量级的一套JS 类库(RapidDevelopmentFramework.JS)

    1.最近好久没有更新自己的博客了,一直在考虑自己应该写一些什么.4.2日从苏州回到南京的路上感觉自己的内心些崩溃和失落,我就不多说了? 猛然之间我认为自己需要找一下内心的平衡.决定开发属于自己一套快速 ...

  8. PS-前端切图教程(切jpg图和切png图)

    微微一运功,把家底都抖出来了. 不过,作为一个设计出身的前端来说,摸ps就和摸键盘一样了 所以可能教程中还是有没用过ps的人看不懂的地方, 欢迎加群讨论:613512106... ---------- ...

  9. PHP数字价格格式化,保留两位小数

    number_format(($v['cash']/100),2); demo=>9,271.15

  10. 马踏棋盘算法递归+回溯法实现 C语言

    r为矩阵的行,c为矩阵的列 将结果输出到当前目录下的results.txt. 结果将给出:1.是否存在路径使马可以按要求走遍所有的方格: 2.解的总数: 3.程序执行的时间: #include< ...