Python 文件读写

Python 文件读写

读写文件使用内建函数open()write()

read()方法

file = open('a.txt','r')  #打开文件'a.txt',返回文件对象file
#print(type(file))
data = file.read()        #调用read方法读整个文件内容,返回字符串
#print(type(data))
file.close()              #关闭打开的文件
print(data)               #显示文件内容

上述代码首先用以“只读”的方式打开文件“a.txt”,此时file是一个文件对象。
read([size=-1])方法读取整个文件内容,字符串data包含了文件的整个内容。read()方法有一个可选参数size,默认是-1。当指定的size>0read()方法读取size个字节;如果size<0或没有指定,则读取文件直至结尾(EOF)。
close()方法关闭open()打开的文件。使用with方法,默认自动关闭文件。

with open('a.txt') as file:
    data = file.read()
    print(data)

readline()方法

readline([size=-1])方法从当前指针位置读取直至行尾。size含义同前。如果size>行字节数,会产生一个回车('\n')

with open('a.txt') as file:
    data = file.readline()    #读取第一行
    print(data)
with open('a.txt') as file:
    data = file.readline(5)    #读取第一行的前5个字符
    print(data)
with open('a.txt') as file:
    file.seek(5)              
    data = file.readline()    #从第一行的第6个字符读取到行尾
    print(data)

通过line()方法遍历文件内容如下。

with open('a.txt') as file:
    line = file.readline()    #读取第一行,返回字符串line
    while line:               #如果line非空
        print(line)
        line = file.readline()

打印每一行内容:

with open('a.txt') as file:
    for line in file:
        print(line,end='')

readlines()方法

readlines([size=-1])方法读取整个文件内容,存入一个列表中,每一行的内容后加入一个换行符'\n'。
如果size<第1行字节数读取第一行,第1行字节数<size<第2行字节数读取第1、2行。依此类推

with open('a.txt') as file:
    data = file.readlines()
    print(data)
    #print(type(data))       #<class 'list'>

文件对象的方法

方法 解释
file=open('a.txt',[options]) 打开文件
file.close('a.txt',[options]) 关闭打开的文件
file.read([size=-1]) 从文件读取 size 个字节。当未给定 size 或给定负值的时候, 读取剩余的所有字节, 然后作为字符串返回。如果打开模式有'b',按字节读取
file.readline([size=-1]) 从文件中读取并返回一行(包括行结束符), 或返回最大 size
file.readlines([size=-1]) 把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
file.fileno() 返回一个长整型的“文件标签”
file.flush() 把缓冲区的内容写入硬盘
file.isatty() 文件是否是一个终端设备文件(unix系统中的)
file.next() 返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的
file.tell() 返回文件操作标记的当前位置,以文件的开头为原点
file.seek(off, whence=0) 将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
file.truncate(size=file.tell()) 截取文件到最大 size 字节, 默认为当前文件位置
file.write(bytes('test',encoding='utf-8')) 向文件写入字符串(会覆盖原有数据)
file.writelines(seq) 向文件写入字符串序列 seq ; seq 应该是一个返回字符串的可迭代对象
file.readlines(sizhint=0) 读取文件的所有行并作为一个列表返回(包含所有的行结束符)

参考资料

[1] 菜鸟学院
[2] 51jb
[3] Mr. Pan
[4] 调整Markdown表格宽度

posted @ 2019-03-05 17:35  hzworld  阅读(475)  评论(0编辑  收藏  举报