文件操作

文件操作

初始文件操作

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

根据打开方式的不同能够执行的操作会有相应的差异.

打开文件的方式:

  r,w,a

  r+,w+,a+

  rb,wb,ab

  r+b,w+b,a+b

默认使用的是r(只读模式)

 

绝对路径和相对路径
1.绝对路径:从磁盘根目录开始一直到文件名
2.相对路径:用一个文件夹下的文件,相对于当前这个程序所在的文件而言.如果在同一个文件中,则相对路劲就是这个文件名.如果再上一层文件夹则要使用../
 
相关小命令:
open()  # 打开
close    要关闭文件
写模式下需要刷新  flush()
mode   第二个内容是咱们对这个文件的操作方式  
encoding 第三个内容是咱们这个文件的编码集

 

只读操作(r/rb)

read()将文件中的内容全部读取出来;弊端 如果文件很大就会非常的占用内存,容易导致内存奔溃
read()读取的时候指定读取到什么位置,我们指定先读取前三个内容,然后在使用read()进行读取会继续向后读取,而不会从头开始读取
f = open('a.txt',mode='r',encoding='utf-8')
content = f.read()
print(content)
f.close()
结果:
标题很好
mode='r'打开的是字符
mode='rb'打开的是字节

 

上边的内容open()函数打开护士少妇萝莉的文件,然后赋值到一个句柄中,open函数中的mode是对这个文件操作是的一种模式
 
encoding这个是制定文件中的编码集
f = open('a.txt',mode='rb')
content = f.read()
print(content)
f.close()
结果:
b'\xe6\xa0\x87\xe9\xa2\x98\xe5\xbe\x88\xe5\xa5\xbd'

rb 读出来的数据是bytes类型,在rb模式下,不能encoding字符集
rb的作用:在读取非文本文件的时候,比如要读取mp3,图像,视频等信息的时候就需要用到rb,因为这种数据是没办法直接显示出来的
在后面我们文件上传下载的时候还会用到.
readline()
readline()读取每次只读取一行,注意点:readline()读取出来的数据在后面都有一个\n(自带换行)
解决这个问题只需要在我们读取出来的文件后边加一个strip()就OK了
f = open('a.txt',mode='r',encoding='utf-8')
content = f.readline().strip()
content1 = f.readline().strip()
content2 = f.readline().strip()
print(content)
print(content1)
print(content2)
f.close()
结果:
标题很好
标题很好
标题很好

 

 

readlines()

readlines()读取全部以一行一行的形式存放在一个列表当中.
f = open('a.txt',mode='r',encoding='utf-8')
content = f.readlines()
print(content)
f.close()
结果:
['标题很好\n', '标题很好\n', '标题很好']

 

 
如果有较大的文件我们进行读取不推荐使用read()一次性将文件全部读取到内存中,内存容易崩溃
f = open('a.txt',mode='r',encoding='utf-8')
for line in f:
print(line.strip())
f.close()

 

模式是r的时候  read(3) 就是读取3个字符
模式是rb的时候 read(3) 就是读取3个字节

 追加a

文件的末尾追写

with open('a.txt',mode='a',encoding='utf-8')as  f:
    f.write('ss')

 

覆盖写w

先清空文件,后写入文件

with open('a.txt',mode='w',encoding='utf-8')as  f:
    f.write('ss')

 

 

rb ,wb ab
只要是带b的模式,注意的是不是不能有encoding
a+
追加 + 读     注意 不管怎么读都读不到内容,除非移动光标

w+
覆盖写 + 读   注意:先写后读  先读后写   除非移动光标

r++ 写      注意: 先读后写

 

其他操作:

移动光标,查看光标,截取

seek()  移动光标
    0,0    开头
    0,1    当前
    0,2    末尾
tell()      查看光标 光标是按照字节数的
truncate() 截取 内容是字节数

 

 

文件修改:

import os  # 导入  os和操作系统相关
# os.rename()  # 重命名  第一个参数旧的名字,第二个是新的名字
# os.remove()    # 删除这个文件  字符串

 

转义:

返回上一级 ..\

# c:\user\... 可以把单个\写成双\\ # 在路径的前面加一个r

 

替换文件中的内容并考入到另一个文件,删除源文件修改文件名字

with open('t3','r',encoding='utf-8')as f,\
    open('t5','a',encoding='utf-8')as f1:
    msg = f.read()  # 将源文件复制一份
    msg = msg.replace('','')
    f1.write(msg)

import os
os.remove('t3')   # 删除原数据
os.rename('t5','t3')

 

posted on 2019-01-09 13:50  🐳️南栀倾寒🐳️  阅读(94)  评论(0编辑  收藏  举报

导航