初识python: 文件操作

1、文件的打开模式:

r:读模式;
w:写模式;
a:追加模式,在文件最后写入内容;
r+:读写模式,读取文件内容,并在末尾添加记录;
w+:写读模式,新建文件并添加记录;
a+:追加写读;
rb:以二进制格式读取文件;
rw:以二进制格式写入文件

注:读模式时,不能写,写模式时,不能读。

格式:

open('文件名','模式',encoding='编码格式')   注:默认r模式,一般使用utf-8编码格式

例:open('file_1','r',encoding='utf-8')

2、常用操作:

f.tell() #获取文件中当前“光标”位置
f.seek(5) #光标定位到指定位置
f.encoding #当前文件的编码格式
f.fileno() #返回文件在内存中的编号
f.name #当前打开文件的文件名
f.seekable() #判断光标在文件是否可移动
f.readable() #判断文件是否可读
f.writable() #判断文件是否可写
f.flush() #强制刷新,把内存里的内容立即写入硬盘
f.truncate(10) #从第10个字符开始清除后面数据
f.close() #关闭文件,文件读取结束自动关闭

3、示例代码:

#!/user/bin env python
# author:Simple-Sir
# time:20180917
# 文件操作

# 注:读模式时,不能写,写模式时,不能读。
# r:读模式;
# w:写模式;
# a:追加模式,在文件最后写入内容;
# r+:读写模式,读取文件内容,并在末尾添加记录;
# w+:写读模式,新建文件并添加记录
# a+: 追加写读
# rb:以二进制格式读取文件
# rw:以二进制格式写入文件

print('---------- r 读模式 只能读取文件 ---------------------------------')
f = open('file_1','r',encoding='utf-8')  # 以读模式(默认模式)打开文件
print(f.read())  # 读取所有文件内容,第二次读取从最后位置开始读取。

# 注:open中写模式(w)时创建一个新文件,若已存在,则覆盖之前的文件。
print('---------- w 写模式 只能写入文件,不能读取文件内容----------------')
f = open('file_1','w',encoding='utf-8') #以写模式创建一个新文件,若已存在,则覆盖之前的文件
f.write('人生总会有不期而遇的温暖,\n')
f.write('和生生不息的希望。')
#--- 读取文件内容 -----
f = open('file_1','r',encoding='utf-8')
print(f.read())

print('---------- a 追加模式 往文件中添加内容 ----------------------------')
f = open('file_1','a',encoding='utf-8')
f.write('\n且将新火试新茶,\n')
f.write('诗酒趁年华。')
f = open('file_1','r',encoding='utf-8') # 读取
print(f.read())

print('----------- r+ 读写,读取文件内容,并在末尾添加记录--------')
f = open('file_1','r+',encoding='utf-8')
print(f.readline())
print(f.readline())
print(f.readline())
f.write('-------读取文件内容,并在末尾添加记录 ----') #在文件末尾添加记录

print('----------- w+ 写读,新建文件并添加记录--------')
f = open('file_1','w+',encoding='utf-8')
print(f.readline())
print(f.readline())
print(f.readline())
f.write('-------新建文件并添加记录 ----') #在文件末尾添加记录
f.write('添加第二条')

print('----------- a+ 追加写读 --------')
f = open('file_1','a+',encoding='utf-8')
print(f.readline())
print(f.readline())
f.write('------- a+ 添加记录 ----') #在文件末尾添加记录

print('-------------- rb 以二进制格式读取文件 -------------')
f = open('file_1','rb')
print(f.readline())
print(f.readline())

print('-------------- wb 以二进制格式写文件 -------------')
f = open('file_1','wb')
f.write('hello binary'.encode())

print(f.readline()) #读一行,默认读取第一行,可通过seek()指定读取行
#for循环 读取5行
for i in range(5):
    print(f.readline())

print(f.readlines()) #把文件内容变成列表,每一行一个元素
#for循环读取文件内容
for i in f.readlines():
    print(i.strip())  # strip 取消左右空格和换行

print('------- 低效率循环读取文件内容,第10行不打印 ------')
for index,i in enumerate(f.readlines()):
    if index == 9:
        print('------- 这是第{0}行,不打印 -----'.format(index+1))
        continue
    print(index + 1, i.strip())

print('------- 高效率循环读取文件内容,第10行不打印 -------')
count = 0
for i in f:
    if count == 9:
        print('------- 这是第{0}行,不打印 -----'.format(count+1))
        count += 1
        continue
    print(i.strip())
    count += 1

print(f.tell()) #获取文件中当前“光标”位置
f.seek(5) #光标定位到指定位置
print(f.encoding) #当前文件的编码格式
print(f.fileno()) #返回文件在内存中的编号
print(f.name) #当前打开文件的文件名
print(f.seekable()) #判断光标在文件是否可移动
print(f.readable()) #判断文件是否可读
print(f.writable()) #判断文件是否可写
print(f.flush()) #强制刷新,把内存里的内容立即写入硬盘
f.truncate(10) #从第10个字符开始清除后面数据
f.close() #关闭文件,文件读取结束自动关闭
文件常用操作

 4、修改文件内容(整行修改):

# 整行修改(实际上是新建一个文件,把源文件及修改后的内容存进去)
f = open('file_a','r',encoding='utf-8')
f_new = open('file_a.new','w',encoding='utf-8')
for i in f:
    if '诗酒趁年华。' in i:
        i = i.replace('诗酒趁年华。','替换值。')
    f_new.write(i)
f.close()
f_new.close()

 5、with as 自动关闭文件

  #注:python规范:一行代码不能超过80个字符, 可使用\换行继续
#自动关闭文件

#打开一个文件
with open('file_a','r',encoding='utf-8') as f:
    print(f.readline())
#打开多个文件用逗号隔开
with open('file_a') as f1,\
        open('file_b') as f2:
    print(f1.readline())
    print(f2.readline())

 

posted on 2018-09-20 21:24  Simple-Sir  阅读(221)  评论(0编辑  收藏  举报

导航