python之文件的操作

1.文件操作初识
文件路径:D:/xx.txt
编码方式:utf-8,gbk,GB2312
操作方式:只读,只写,写读,读写,追加等。

f=open('f:\联系方式.txt',encoding='utf-8',mode='r')
content=f.read()
print(content)
f.close()
'''
f,变量 f_obj,f_handler,f_h,fh,文件句柄。
open() python的内置函数(内部调用的是windows的系统命令)
1.打开文件,产生文件句柄。
2.对文件句柄进行操作。
3.关闭文件句柄。
'''
2.读
(1)r
1)全部读取
f=open('f:\联系方式.txt',encoding='utf-8',mode='r')
content=f.read()
print(content)
f.close()
绝对路径:f:\联系方式.txt 从磁盘根目录开始一直到文件名
相对路径:用一个文件夹下的文件,相对于当前这个程序所在的文件而言.
如果在同一个文件中,则相对路劲就是这个文件名.如果再上一层文件夹则
要使用../相对路径下,你就可以直接写文件名即可。
f=open('文件调用',encoding='utf-8',mode='r')
content=f.read()
print(content)
f.close()
2)read(n) 在r模式下,n按照字符读取
f=open('文件调用',encoding='utf-8',mode='r')
content=f.read(10)
print(content)
f.close() #小甲鱼是最好的老师。
3)按行读取 readline
f=open('文件调用',encoding='utf-8',mode='r')
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
f.close()
4)按行读取,返回一个list
f=open('文件调用',encoding='utf-8',mode='r')
content=f.readlines()
print(content)
f.close()
5)for 循环
f=open('文件调用',encoding='utf-8',mode='r')
for line in f:
print(line.strip())
f.close()
(2)rb
文件操作中凡是带b字母,都是与非文字类文件相关的。
f=open('美女.jpg',mode='rb')
content=f.read()
print(content)
f.close()
b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xfe\x00;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 85\n

f=open('文件调用',encoding='utf-8',mode='rb')
content=f.read(10) #rb模式下n按照字节读取
print(content)
f.close()

3.写
1)w模式:写
没有文件 ,创建文件也要写

f=open('文件操作2',encoding='utf-8',mode='w')
f.write('深圳骑士计划1')
f.close()
有文件,先清空,后写入
f=open('文件操作2',encoding='utf-8',mode='w')
f.write('深圳市是一个经济特区')
f.close()
2)wb模式

以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,

即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如:图片,音频,视频等。


例如:

我先以rb的模式将一个图片的内容以bytes类型全部读取出来,然后在以wb将全部读取出来的数据写入

一个新文件,这样我就完成了类似于一个图片复制的流程。


第一步:将原图片通过rb模式读出来
f=open('美女.jpg',mode='rb')
content=f.read()
print(content)
第二步:将读出来的数据通过wb模式写入新文件
f1=open('美女1.jpg',mode='wb')
f1.write(content)
f1.close()
4.追加
1)a模式
没有文件,创建文件也要写
f=open('文件操作3',encoding='utf-8',mode='a')
f.write('深圳市是一个经济特区')
f.close()
有文件,直接在文件的最后面追加
f=open('文件操作3',encoding='utf-8',mode='a')
f.write('\n深圳市罗湖区')
f.close()
5.文件的其他功能:
tell获取光标的位置 单位字节
f=open('文件的调用',encoding='utf-8')
print(f.tell())
content=f.read()
print(f.tell())
f.close()
seek 调整光标的位置
f=open('文件调用',encoding='utf-8')
print(f.seek(7))
content=f.read()
print(content)
f.close()
fiush 强制刷新
f=open('文件的其他功能',encoding='utf-8',mode='w')
f.write('ffkmmvdcmmv')
f.flush()
f.close()
打开文件的另一种方式
优点1 不用手动关闭文件句柄
with open('文件调用',encoding='utf-8') as f1:
print(f1.read())
优点2
with open('文件调用',encoding='utf-8') as f1,\
open('文件的写',encoding='utf-8',mode='w') as f2:
print(f1.read())
f2.write('funscjcnkvns')
缺点

文件的改的操作
1.以读的模式打开原文件
2.以写的模式创建一个新文件
3.将原文件的内容读出来修改成新内容,写入新文件
4.将原文件删除
5.将新文件重命名成原文件
low版
import  os
#1.以读的模式打开原文件
#2.以写的模式创建一个新文件
with open('alex自述',encoding='utf-8') as f1,\
    open('alex自述.bak',encoding='utf-8',mode='w') as f2:
# 3.将原文件的内容读出来修改成新内容,写入新文件
    old_content=f1.read()
    new_content=old_content.replace('alex','SB')
    f2.write(new_content)
os.remove('alex自述')
os.rename('alex自述.bak','alex自述')
进阶版
import  os
1.以读的模式打开原文件
2.以写的模式创建一个新文件
with open('alex自述',encoding='utf-8') as f1,\
    open('alex自述.bak',encoding='utf-8',mode='w') as f2:
3.将原文件的内容读出来修改成新内容,写入新文件
     for line in f1:
         #第一次循环SB是老男孩python发起人,创建人

         new_line = line.replace('SB','alex')
         f2.write(new_line)
os.remove('alex自述')
os.rename('alex自述.bak','alex自述')

  

有关清空的问题
关闭文件句柄,再次以w模式打开此文件才会清空
posted @ 2020-05-30 16:30  菜鸟鸭  阅读(154)  评论(0)    收藏  举报