读文本文件

引题:PS、word 读写修改文件;美图秀秀把自己的照片美白加装饰;微博上传本地图片;QQ上传表情图;管理系统上传Excel批量导入信息。读文件就是把内容读出来,写文件就是把信息写在硬盘上。

python也可以读写文件。自动化和批量化,比如Excel批量导入信息,比如修改图片元信息,比如批量保存头像,软件站自动下载软件。本质上也是代码对本地资源的读写。更高效,更自动化对文件进行编程,代替人工。

本地:你自己用的电脑,客户端,本地资源:固态硬盘 C/D盘上的资源

纯文本文件(.txt文件形式):可以直接被计算机翻译并保存并存储到硬盘上,只包含文字。没有特殊的效果格式。适合刚开始的读写研究。

read()(适用于文件(English_ascii.txt)内容为英文)

读文件的流程:建立到文件的映射,生成文件对象 > 文件对象.读取文件信息 > 信息处理 > 关闭文件对象。

IO:input output 输入和输出,input() print()。

open:open(文件路径/文件名,模式)。
'r’模式,代表read,读文件
方法:文件对象.read() 读文件信息。
file.close() 关闭文件,释放内存。

file = open('English_ascii.txt','r')    # 文件名是一个信息,所以用单引号引住。  用一个变量去打开文件
content = file.read()     # 用一个变量去接收文件的信息
print(content)             # 打印出文件信息
file.close()                  #  关闭文件

在.py文件的当前文件夹下创建一个English_ascii.txt文件
file.read()  一次性全部读取信息到内存中。缺点,当文件内容较大时,这个过程好费时间。
readline()

file.readline():生成器结构一次只读取一行。生成器结构。优点是:不占内存空间,速度快。缺点:不能再次从file对象读取信息。

file = open('English_ascii.txt','r')    # 文件名是一个信息,所以用单引号引住。  用一个变量去打开文件
content = file.readline()    # 用一个变量去接收文件的信息  输出内容的第一行
print(content)      # 打印出文件信息
content = file.readline()    # 用一个变量去接收文件的信息  输出内容的第二行
print(content)      # 打印出文件信息
content = file.readline()    # 用一个变量去接收文件的信息  输出内容的第三行
print(content)      # 打印出文件信息

file.close()       #  关闭文件
file = open('English_ascii.txt','r')
while True:
    content = file.readline()  # 用一个变量去接收文件的信息  输出内容的第二行
    print(content)
    if content == '':       # 当文件内容较少时可以用此方法
        break

file.close()
readlines()

file.readlines():一次性全部读取,跟read()不同是,返回的为一个列表,每一项是一行信息,优点是:获得列表后更方便操作。

\n相当于告诉计算机表示换行,代表转义字符

file = open('English_ascii.txt','r')
content = file.readlines()
print(type(content))
print(content)
for line in content:
    print(line)
字符编码

引题:在windows资源管理器中新建 含有中文的txt文件,windows上的文件应用正常打开,但是pycharm中打开中文乱码

file = open('chinese_gbk.txt','r',encoding='gbk')
print(file.readline())
print(file.readline())
print(file.readline())
print(file.readline())
print(file.readline())

open():arg1文件名,arg2模式,encoding 编码。
encoding参数如果没有写,默认随系统,windows系统默认编码为gbk,linux、mac系统上的默认编码为utf-8。
捕获异常版
try:
    file = open('Chinese_utf8.txt', 'r', encoding='utf-8')
    lines = file.readlines()
    print(lines)
    for line in lines:
        print(line)
except FileExistsError:
    print('请检查路径和文件名')
except UnicodeDecodeError:
    print('检查编码方式是否正确')

except Exception as e:
    print(e)
finally:
    file.close()

注意:这里用的编码是utf8,上面用到的编码是gbk。chinese_gbk.txt保存的文件格式是默认ANSI,Chinese_utf8.txt保存的文件格式是utf8,如果保存的utf8格式用编码gbk会出现乱码情况,所以这里用到的是编码utf8,也是为了和文件格式保持一致。
with语句

with:with语句要求后面跟的对象实现 进入方法__enter__() 退出__exit__() with语句执行时,这两种方法会自动执行。
as:把 … 当做 … 类似于等号。
场景:一项任务有固定的预处理和退出处理,把这些任务的实现代码封装到__enter__() exit()中,这样在with语句块中只用写主要的业务逻辑。为做项目节省更多时间,代码更加清晰。

with open('Chinese_utf8.txt','r',encoding='utf8') as file:
    # file.__enter__()    # with语句默认执行了enter语句,文件打开的预处理
    content = file.read()
    print(content)
    # file.__exit__()     # 对象结束后的操作,例如f.close()  也是with语句最后默认执行的
Logo

快速构建 Web 应用程序

更多推荐