欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

读文本文件

程序员文章站 2022-04-08 17:09:35
...

读文本文件

引题: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语句最后默认执行的
相关标签: 读文件