文件操作

1.打开文件

f = open('db','a')#追加
f = open('db','w')#只写,先清空原文件
f = open('db','r')#只读
f = open('db','x')#文件存在,报错,不存在,创建并写内容
f = open('db','r',encoding='utf-8')#出现encoding时编码错误(平常用utf-8)
如果加b时读取的是字节(写入时需要转换成字节+编码写入)
如果参数后带+号表示可读可写

例:不加b的情况下输出文件(类型为字符串str形式)

f = open('db','r',encoding='utf-8')
data = f.read()
print(data,type(data))
f.close()

--------------结果----------------
/usr/bin/python3.5 /home/liangml/pythonscript/test.py
123  tony
 <class 'str'>

加b的情况下输出的文件(类型为字节的形式bytes)

f = open('db','rb',encoding='utf-8')#只要是加b的直接写入字节(都是二进制的)
data = f.read()
print(data,type(data))

------------------------------------------------
# f = open('db','ab')
# f.write(bytes("hello",encoding="utf-8"))#写入是转换成字节
# f.close()
----------------结果-------------- /usr/bin/python3.5 /home/liangml/pythonscript/test.py b'123 tony\n' <class 'bytes'>
#如果有加号则表示可读可写
f = open('db','r+',encoding='utf8')
#如果模式无b,则read,按照字符读取
data = f.read()
print(data)
print(f.tell())#获取当前指针的位置
f.seek(1)#主动的调整指针的位置(但是会覆盖)
f.write('777')
f.close()

2.操作文件

read()#无参数,读全部;有参数
                            1.b,按字节
                            2.无b,按字符
tell()获取当前指针的位置
seek(1)指针跳转到指定的位置(字节)
write()写数据,b,字节;无b,字符
fileno文件描述符
flush强刷
readable查看是否可读
wirteable查看是否可写
readline 仅读取一行
truncate 截断数据,指针位置后的清空
for循环文件对象 f = open(xxx)
        f = open('db','r+',encoding='utf8')
            for line in f:
                print(line)

3.关闭文件

1.可以通过close来关闭文件

2.可以通过with方式来关闭文件(with可以同时打开多个文件)

 close方式关闭

f.close()
with open('db') as f:
    pass

with方式来关闭

with open('db') as f:
    pass
with open('db','r',encoding='utf-8') as f1,open('db2','w',encoding='utf-8') as f2:#可以同时打开多个文件
    times = 0
    for line in f1:
        times += 1
        if times <=10:
            f2.write(line)
        else:
            break
with open('db','r',encoding='utf-8') as f1,open('db2','w',encoding='utf-8') as f2:
    for line in f1:
        new_str = line.replace('liangml','st')#replace更换
        f2.write(new_str)

 

posted @ 2016-10-12 17:21  Callum  阅读(154)  评论(0编辑  收藏  举报