码迷,mamicode.com
首页 > 编程语言 > 详细

python文件的操作

时间:2019-01-11 23:19:13      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:文件中   属性   相对路径   需要   family   字符   自动   上下文   lines   

  以前总听别人说,把文件改成只读模式,也经常在文件属性中看到,是‘只读‘,今天终于了解到一些相关的文件操作

在文件中,有以下的几种模式:

  r    只读

  r+  读+写

  w   覆盖写

  w+   先覆盖再写,然后再读

  a   追加

  a+   追加读

只读: mode = "r"或"rb",读文件r 读字节rb
f = open(‘文件名‘,mode = ‘r‘,encoding=‘utf-8‘)
  打开 第一个内容是文件的名字,(必须是字符串)
  mode 第二个内容是对这个文件的操作方式(模式)
  encoding 第三个内容是这个文件的编码集
  f 文件句柄.所有对于文件的操作,都是操作文件句柄

  content = f.read( ) 读, 一次性全部读取
  mode = ‘r‘,read里的内容就是表示读取的字符数量
  content = f.readline( ) 读取一行,但是尾部有一个\n(换行)
  content = f.readlines( ) 一行一行读取,,读取多行,都存放在列表里

f = open(‘t1‘,mode = ‘r‘,encoding = ‘utf-8‘)
  mode = ‘r‘,只读模式.
  read(),括号里的参数如果是单数,就代表读取的字符数量,例如read(3),就是读取前三个字
  f = open(‘t1‘,mode = ‘rb‘)
  mode = ‘rb‘, 读取字节,不能指定编码集; read(3)在当前模式下,是读取三个字节

路径:   

  绝对路径: 从磁盘查找额就是绝对路径
  相对路径: 相对于某个文件的位置(推荐写法)
  存放文件路径也必须是字符串类型,全部替换双斜杠,如果文件路径过长,在路径前加一个r,和\\一样,都是转义

f = open(‘t1.txt‘,mode = ‘w‘,encoding = ‘utf-8‘)
  写: mode = "w"或"wb" 写文件: w 写字节:wb (只写,没有读的功能)

f.write("新的内容") w 模式如果文件不存在,就新建一个;
覆盖写,在写之前就先把文件清空
f = open(‘t1‘,mode = ‘a‘,encoding = ‘utf-8‘)
  追加: mode = ‘a‘, 在文件的末尾位置添加内容
r + 读+写
w + 写+读
a + 追加+读
f = open(‘t1‘,mode = ‘r+‘,encoding = ‘utf-8‘) 先读后写
f = open(‘t1‘,mode = ‘w+‘,encoding = ‘utf-8‘) 先写后读

f.seek() 移动光标位置,先写后读时光标默认是在最后,读取时需要把光标移动到最前面
例:

f = open(t1,mode = w+,encoding = utf-8)
f.write("写的内容")
f.seek( )    移动光标位置
print(f.read())

f = open(‘t1‘,mode = ‘a+‘,encoding= ‘utf-8‘) 追加写+读
  f.seek(0)
  print(f.read())

f.write(‘‘)
..\ 返回上一级
f.flush() 刷新

上下文管理 with open

with open(‘文件路径‘,mode = ‘模式‘,encoding = ‘utf-8‘)as f:
  msg = f.read()
  print(msg) 不用手动关闭文件,操作完成之后自动关闭

其他操作

  f.seek(),移动光标的位置
  f.tell(),查看光标的位置
  f.truncate(),截取,指定光标的位置进行截取,按字节进行计算
  with open("文件路径",mode = ‘模式‘,encoding=‘utf-8‘)as f:
  pirnt(f.read())
  print(f.tell()) tell 查看光标的位置,数的是字节
  with open("文件路径",mode=‘模式‘,encoding=‘utf-8‘)as f:
  f.trunca(9),截取9个字节,也就是3个字符,在python3中,要先手动移动光标,再进行 截取

参数:

双数字:0,0文件的头部;0,1光标当前的位置;0,2文件尾部
单数字:数字表示的是字节
os模式:
os.rename("旧的名字","新的名字")
os.remove("要删除的文件")

文件修改

***** 先做备份


with open("文件路径",mode= ‘模式‘,encoding=‘编码集‘)as f,\
open("文件路径",mode=‘模式‘,encoding=‘编码集‘)as f1:
  f:原文件的句柄
  f1:新文件的句柄
  msg = f.read() 读取原文件的内容,临时存到msg变量中
  s = msg.replace(‘被修改的内容‘,‘修改后的内容‘)
  f1.write(s) 将修改的内容写到新的文件中, 原文件不动
ps:有一个弊端,当文件太大的时候,内存很容易溢出,需要用for循环

with open(‘文件路径‘,mode=‘模式‘,encoding=‘utf-8‘)as f,\
open(‘文件路径‘,mode=‘模式‘,encoding=‘utf-8‘)as f1:
  for i in f:                   #一行一行的读取
  msg = i.strip().replace("旧内容","新内容")
  f1.write(msg)                #将每行内容写入到新的文件中

python文件的操作

标签:文件中   属性   相对路径   需要   family   字符   自动   上下文   lines   

原文地址:https://www.cnblogs.com/py8318/p/10240538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!