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

python 的基础学习 第九天 文件的操作

时间:2018-03-27 20:59:32      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:readlines   格式   内存   抛出异常   目录   pre   a+b   读取   color   

1,文件操作

参数:1,文件路径  2,编码方式,3,执行动作(打开方式),只读,只写,,读写,追加和读写。

1  打开文件,得到文件句柄并赋值给一个变量。2. 通过句柄对文件进行操作。3. 关闭文件。

f = open(yuyu,encoding=gbk,mode=r)
#可以设f变量,f_obj,file,f_handler.....等文件句柄。
s = f.read()
print(s)
f.close()

open是windows的系统功能,windows的默认编码方式是gbk,linux操作系统默认为utf-8。

流程:打开一个文件,产生一个句柄,对文件句柄进行操作,然后关闭。

读:r只读

1,文件以什么编码存储的就以什么编码方式打开。

2,文件路径:绝对路径,从根目录开始一级一级查找直到找到。

                         相对路径,在同一文件夹下直接写文件。

五种方式:

1,f.read,全部读出来。只读模式,可以不注明。默认就是只读模式。

f=open(‘yu.bak‘,encoding=‘utf-8‘)

2,f.readline,一行一行的读取。

3,f.readlines将原文件的每一行作为一个列表的元素读取。

4,f.read(n)在r模式下按照字符读取。n=(字符数)

                      在rb模式下read(n)按照字节读取。rb模式只读以bytes类型,非文字类的文件时用rb

5,循环读取。这种方式最好,占内存少。

f = open(yu,r,encoding=utf-8)
for i in f:
    print(i.strip())
f.close()

写:w,write写模式

f = open(yu,w,encoding=utf-8)
s = f.write(何时明月有)
print(s)
f.close()

w 写模式,没有文件时创建一个文件写入内容,有文件,将原文件内容清空,再写入内容。

#1. 打开文件的模式有(默认为文本模式):
r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
w,只写模式【不可读;不存在则创建;存在则清空内容】
a, 只追加写模式【不可读;不存在则创建;存在则只追加内容】

#2. 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)
rb 
f=open(yu.bak,mode=rb)
s= f.read(6)
print(s)
f.close()#b‘alex\xe6\x98‘

 

wb
ab
注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

#3,‘+’模式(就是增加了一个功能)
r+, 读写【可读,可写】
w+,写读【可写,可读】
a+, 写读【可写,可读】

#4,以bytes类型操作的读写,写读,写读模式
r+b, 读写【可读,可写】
w+b,写读【可写,可读】
a+b, 写读【可写,可读】

  

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

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

其余的文件内光标移动都是以字节为单位的如:seek,tell,truncate

注意:

  1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的

 

  2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果。

f = open(yu,r+,encoding=utf-8)
s = f.truncate(4)
print(s)
f.close()

2,文件的修改

# ① 创建一个新的文件
# ② 读取一个原文件
# ③ 将原文件的内容通过你想要的方式进行更改并写入新文件
# ④ 将原文件删除
# ⑤ 将新文件重命名

with 语句:

1,功能一自动关闭文件句柄。2,一次性操作多个文件 。

# import os
# with open(‘yu‘,encoding=‘utf-8‘)as f1,\
#     open(‘yu.bak‘,encoding=‘utf‘,mode=‘w‘)as f2:
#     content = f1.read()
#     new_content = content.replace(‘SB‘,‘alex‘)
#     f2.write(new_content)
# os.remove(‘yu‘)

 

python 的基础学习 第九天 文件的操作

标签:readlines   格式   内存   抛出异常   目录   pre   a+b   读取   color   

原文地址:https://www.cnblogs.com/yzxing/p/8657999.html

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