Python基础教程:文件处理

2023-07-0116:55:51编程语言入门到精通Comments1,459 views字数 2180阅读模式

文件处理概述

Python内置了open方法,用于打开文件。我们要操作文件,一般是先打开文件,然后对内容进行处理,最后再关闭文件。简单的示例代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/49134.html

# 打开文件
f = open("manage.py", encoding="utf-8")

# 读取文件内容
for line in f:
    print(line)

# 关闭文件
f.close()

文件处理模式 open方法有一个参数是mode,则个参数控制打开文件的模式。这个mode主要支持的参数如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/49134.html

  • r:比较常用,读取文件,默认值,如果文件不存在会报错。
  • w:写入文件,如果文件不存在会报错。
  • a:追加文件,如果文件不存在会报错。
  • w+:比较常用,写入文件,如果文件不存在,不会报错。
  • a+:比较常用,追加文件,如果文件不存在,不会报错。

文件对象方法

调用open方法以后能够得到一个文件对象,这个对象主要有以下方法:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/49134.html

  • seek:设置游标的偏移位置,比如设置seek为0,表示从头开始读文件。
  • read:读取所有数据。
  • readline:读取一行数据。
  • readlines:读取所有数据,按行返回,是一个可迭代对象。
  • write:写入数据。
  • writelines:写入多行数据,接收一个列表,注意不会自动添加换行符。
  • close:关闭文件对象,这个很重要,不执行可能会长期占用内存资源,造成内存泄露。

示例:文件对象方法的基本使用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/49134.html

# 打开文件
f = open("tmp/test.text", "w+", encoding="utf-8")

# 写入数据
f.write("a")
f.write("b")
f.write("c\n")

# 写入多行数据
f.writelines(["bbc\n", "cbc\n"])

# 读取
f.seek(0)
print(f.read())

f.seek(0)
print(f.readline())

f.seek(0)
print(f.readlines())

# 关闭文件
f.close()

综合案例:基于文件的权限校验

注册功能:让用户录入用户名,密码和确认密码,校验两次密码是否一致,如果一致则注册成功,否则注册失败。如果注册成功了,将用户名和密码保存到文件users.txt中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/49134.html

# 打开文件
f = open("tmp/users.text", "a+", encoding="utf-8")

# 写入数据
username = input("请输入用户名:")
password = input("请输入密码:")
re_password = input("请确认密码:")

if username and password and re_password:
    if password == re_password:
        f.write(f"{username},{password}\n")
    else:
        print("两次密码不一致")
else:
    print("用户名或密码不能为空")

# 关闭文件
f.close()

登录功能:让用户录入用户名和密码,却users.txt中查找是否存在该用户,如果存在,则判断密码是否正确。如果用户名存在且密码正确则提示登录成功,否则提示用户名或密码错误。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/49134.html

# 打开文件
f = open("tmp/users.text", "r", encoding="utf-8")

# 写入数据
username = input("请输入用户名:")
password = input("请输入密码:")

# 读取所有的已注册的用户
users = f.readlines()

if username and password:
    # 查找
    for user in users:
        db_username, db_password = user.strip().split(",")
        if username == db_username and password == db_password:
            print("登录成功")
        else:
            print("用户名或密码错误")
else:
    print("用户名或密码不能为空")

# 关闭文件
f.close()

文件复制

文件复制的原理比较简单,只需要打开一个文件,读取所有内容,然后再创建一个新的文件,将读取到的内容写入到这个新的文件即可。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/49134.html

示例:文本文件复制。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/49134.html

# 打开文件
f = open("tmp/users.text", "r", encoding="utf-8")
f1 = open("tmp/users1.text", "w", encoding="utf-8")

# 复制
f1.write(f.read())

# 关闭文件
f.close()
f1.close()

示例:媒体文件复制。媒体文件也就是二进制文件,只需要将读取模式改为rb和wb即可,原理和代码完全一致。需要注意的是,二进制类型的文件不能指定编码,否则会报错。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/49134.html

# 打开文件
f = open("tmp/1.png", "rb")
f1 = open("tmp/2.png", "wb")

# 复制
f1.write(f.read())

# 关闭文件
f.close()
f1.close()
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/49134.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/49134.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定