第10天:文件的操作与读写

文件的基本操作

        可操作的文件:

        .txt及没有后缀名的文件

        操作文件的方式(三步法):

        1. 打开文件(open)
        2. 读或者写
        3. 关闭文件

        打开文件的方式:open('要操作的文件路径', '读写模式', '字符编码')    open('要操作的文件路径', '读写模式', '字符编码')    

f= open(r'D:\Python27\day10\a.txt', 'r', encoding='utf-8') 
print(f) 
print(f.read()) 
f.close()

        文件的路径分为绝对路径和相对路径,当路径中出现了字母和斜杠的组合会产生一些特殊的含义,所以我们应该给去掉。

         第二种方式操作文件的方式,如

with open('a.txt', 'r', encoding='utf-8') as f: 
    f.close()
print(f.read())

        其中 with是上下文管理器,用来打开文件;as是用来起别名的,这种方式的特点能自动关闭文件。

文件的读写模式

        读写模式:

        r(只读:只能读不能写)  

        w(只写:只能写,不能读)    

        a(append:在原来的基础之上在添加新的内容)

        读模式:

        方式一:

f = open('a.txt', 'r', encoding='utf-8')
print(f.read())
f.close()

        方式二:

with open('a.txt', 'r', encoding='utf-8') as f:
     print(f.read())

        特征:

        当文件路径不存在的时候,会直接保存 

         写模式:

with open('b.txt', 'w', encoding='utf-8') as f:
    f.write('hello')

        特征:

        1. 当文件路径不存在的时候, 会新建出来一个文件,而不报错
        2. 写模式会把原来的数据覆盖掉,从新写入新的数据

        追加模式:

with open('c.txt', 'a', encoding='utf-8') as f:
    f.write('hello world')
    f.write('hello world1')
    f.write('hello world2')
    f.write('hello world3')
    f.write('hello world4')
    f.write('hello world5')

         特征:

        路径不存在的时候,也会新建出来文件,它是追加写,而不是覆盖原来的内容

读写操作相关的方法

        读系列

with open('a.txt', 'r', encoding='utf-8') as f:
        print(f.read())
        print(f.readline()) 
        print(f.readline()) 
        print(f.readlines()) 
        print(f.readable())

        写系列

with open('a.txt', 'w', encoding='utf-8') as f:
        f.write('jerry say hello ')
        f.writelines(['hello\n', 'jerry\n', 'kevin\n', 'jason\n'])
        print(f.writable())
        print(f.readable())	

文件的读操作优化

        一次性读取所有数据:

with open('a.txt', 'r', encoding='utf-8') as f:
    print(f.read())

         一次性读取数据存在的问题:

        当数据比较多的时候,会出现内存溢出

           优化方式:

        一点一点的读取数据然后把数据赶紧刷到硬盘里

        代码如下:

with open('a.txt', 'r', encoding='utf-8') as f:
    for line in f:
        print(line)
    f.flush()

文件的操作模式

        文本模式:

        with open('userinfo.txt', 'r', encoding='utf-8') as f:
        文本模式默认就是操作字符串,文本
        特征:
            1. encoding参数必须指定
            2. 读取的所有的数据都是以字符串为单位的
            3. t模式只能够读取文本或者字符模式

        二进制模式:

        b模式:binary
        with open('userinfo.txt', 'rb') as f:
        b模式中得b不能省略------------> rb wb ab
        特征:
            1. encoding='utf-8'参数不能够指定
            2. 读取的数据全部以字节为单位
            3. 二进制模式可以读取任意类型的文件

你可能感兴趣的:(python)