文件操作

各种操作数据方式,与光标起始位置的关系

文件的读
r  r+  rb  r+b
每种模式下有5种不同读文件的方法

r
全部读取

f=open('ghl.txt',encoding='utf-8')默认read模式
print(f.read())
f.close

read(n)

复制代码
r模式 n带表字节
b模式 n代表字符
f=open('ghl.txt',encoding='utf-8')
print(f.read(n))
f.close()

readline 按行读  读一行,可以用for循环全部读取
f=open('ghl.txt',encoding='utf-8')
print(f.readline())
f.close()

循环读取1
f=open('ghl.txt',encoding='utf-8')
for line in range(0,4)
    print(f.readline())
f.close() 
循环读取2
f=open('ghl.txt',encoding='utf-8')
for line in f:
    print(line)
f.close()       

readlines 
返回一个list,列表的每个元素是原文件的每一行
f=open('ghl.txt',encoding='utf-8')
print(f.readlines())
f.close()

rb以字节形式读取 非文字类文件
f=open('ghl.txt',mode='rb') 非文字不能用utf-8!!!
print(f.read())
f.close()

r+先读后写
f=open('ghl.txt',encoding='utf-8')
print(f.read()) 读完光标在末尾
f.write('写入内容‘’)
f.close()
复制代码

文件的写

复制代码
w  w+  wb   w+b
w
没有文件,就创建文件,写入内容
f=open('ghl',encoding='utf-8')
f.write('写入内容')
f.close()
如果有文件就先清空后写入
f=open('ghl.txt',encoding='utf-8',mode='w')
f.write("I'm a tall man")
f.write("I'm a tall man")
f.write("I'm a tall man")
f.write("I'm a tall man")
---
可以循环写入
for i in range(4)
    f.write('I'm a tall man')
f.close()

wb 可以用来复制图片
f=open('图片.png',mode='rb')
content=f.read()
f.close()
f=open('图片2.png',mode='wb')
f.write(content)
f.close()

文件的追加   a
f=open('ghl.txt',encoding='utf-8',mode='a')
f.write('追加内容')
f.close()


    
复制代码

文件常用操作方法
read(3)
1.文件打开方式为文本模式时,代表读取3个字符
2.文件打开方式为b模式时,代表读取3个字节
其余文件内光标移动都是以字节为单位的,如seek,truncate,tell
seek,指定文件中指针位置

f=open('ghl',encoding='utf-8')
f.seek(9)
print(f.read())
f.close()指定从第9个字节后读取

truncate,截取数据,仅保留之前的数据,多打开文件必须可写,
但不能用w 和 w+ 来打开,因为会直接清空文件,所以truncate要在a a+ 或者r+ 模式下打开(注意光标位置

f=open('ghl',encoding='utf-8',mode='r+')
f.truncate(9)
f.close()

tell,获取当前指针位置。

f=open('ghl',encoding='utf-8')
print(f.tell())
f.close()

flush,刷新文件内部缓冲区????怎么用

readable文件是否可读
writeable文件是否可写

文件的修改

复制代码
import os  # 调用系统模块

with open('a.txt') as read_f,open('.a.txt.swap','w') as write_f:
    data=read_f.read() #全部读入内存,如果文件很大,会很卡
    data=data.replace('alex','SB') #在内存中完成修改

    write_f.write(data) #一次性写入新文件

os.remove('a.txt')  #删除原文件
os.rename('.a.txt.swap','a.txt')   #将新建的文件重命名为原文件
复制代码

 

一行一行修改,

复制代码
import os

with open('a.txt') as read_f,open('.a.txt.swap','w') as write_f:
    for line in read_f:
        line=line.replace('alex','SB')
        write_f.write(line)

os.remove('a.txt')
os.rename('.a.txt.swap','a.txt')
复制代码

 



 

posted @   百鬼之主  阅读(147)  评论(1编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示