读文件:

#使用Python内置的open()函数,传入文件名和标示符
#标示符'r'表示读,这样,就成功地打开了一个文件。
f = open('D:/PycharmProjects/pachong/file/file1.txt', 'r')

#调用read()方法可以一次读取文件的全部内容
# Python把内容读到内存,用一个str对象表示
strAll = f.read()
print(strAll)
#最后一步是调用close()方法关闭文件。文件使用完毕后必须关闭
# 因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的
f.close()

输出结果:
qqqqqqqqqqqqqqqqqqqq
ddddddddddddddddddddd
fffffffffffffffffffff
ccccccccccccccccccccc

由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现

try:
    f = open('D:/PycharmProjects/pachong/file/file1.txt', 'r')
    print(f.read())
finally:
    if f:
        f.close()

但是每次都这么写太繁琐,Python引入了with语句来自动调用close()方法:

with open('D:/PycharmProjects/pachong/file/file1.txt', 'r') as f:
    print(f.read())
 

输出结果:
qqqqqqqqqqqqqqqqqqqq
ddddddddddddddddddddd
fffffffffffffffffffff
ccccccccccccccccccccc

readline():只读取一行

with open('D:/PycharmProjects/pachong/file/file1.txt', 'r') as f:
    print(f.readline())
    
输出结果:
qqqqqqqqqqqqqqqqqqqq


with open('D:/PycharmProjects/pachong/file/file1.txt', 'r') as f:
    print(f.readline(4))
    
输出结果:
qqqq

**readlines():**一次性读取文本的所有内容,并以列表的形式存储返回

with open('D:/PycharmProjects/pachong/file/file1.txt', 'r') as f:
    print(f.readlines())
        
输出结果:
['qqqqqqqqqqqqqqqqqqqq\n', 'ddddddddddddddddddddd\n', 'fffffffffffffffffffff\n', 'ccccccccccccccccccccc']



with open('D:/PycharmProjects/pachong/file/file1.txt', 'r') as f:
    for line in f.readlines():
        print(line.strip())   ## 把末尾的'\n'删掉

输出结果:
qqqqqqqqqqqqqqqqqqqq
ddddddddddddddddddddd
fffffffffffffffffffff
ccccccccccccccccccccc

总结:python中读取文件函数–>read()、read(size)、readline()、readlines()的区别

read():一次性读取文本的全部内容,并以字符串的形式存储返回

read(size):方法,每次最多读取size个字节的内容

readline(): 一次性只读取文本内容的一行,并以字符串的形式存储返回

readlines(): 一次性读取文本的所有内容,并以列表的形式存储返回

①:在没有足够内存的情况下,可以考虑使用readline(),每次只读取一行,不会太消耗内存;

②:readline()readlines()相比,前者由于是一行一行读取返回的,所以相较于后者,会慢很多;

③:如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便。

字符编码
通过给open()函数传入encoding参数,指定要读取文本文件的编码格式:

with open('D:/PycharmProjects/pachong/file/file1.txt', 'r',encoding='utf-8') as f:
    print(f.read())

open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略:

with open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore') as f:
    print(f.read())