Python中的File(文件)操作

针对磁盘中的文件的读写。文件I/O I 输入(input) O输出(Output)

文件操作步骤:1.打开文件 2.读写文件 3.关闭文件

写入文件的操作:(把大象装进冰箱)

  1. 打开文件 open() ==> 打开冰箱
  2. 写入内容 write() ==> 把大象装进冰箱
  3. 关闭文件 close() ==> 关闭冰箱门

读取文件的操作:(把大象从冰箱中取出)

  1. 打开文件 open() ==> 打开冰箱门
  2. 读取内容 read() ==> 把大象拿出来
  3. 关闭文件 close() ==> 关闭冰箱门

文件操作相关函数

open() 打开文件

格式: open(文件的路径,打开的方式,[字符集])

Seek() 设置文件指针的位置

fp.seek(0)  # 把文件指针设置到文件的开头位置
fp.seek(10)   # 设置文件指针的位置
fp.seek(0,2)  # 0,2是把文件指定设置在文件的末尾

write() 写入内容

格式:文件对象.write(字符串)

writelines() 写入容器类型数据

格式:文件对象.write(容器类型数据)

注意:容器类型数据中的元素也必须是可写入的字符串类型

read() 读取内容

格式:文件对象.read() 从当前指针位置读取到最后

格式:文件对象.read(读取的字节数) 可以读取指定长度的字符

readline() 读取一行

格式: 文件对象.readline() 一次读取一行

格式: 文件对象.readline(字节数) 一次读取一行中指定长度的字节

readlines() 读取所有行

格式: 文件对象.readlines() 读取所有行,每一行作为一个元素,返回了一个列表

格式:文件对象.readlines(6) 按照行进行读取,可以设置读取的字节数,设置的字节数不足一行按一行算

close() 关闭文件

格式:文件对象.close() 关闭打开的文件

文件操作的高级便捷写法

# 文件操作的 高级写法
'''
with open(文件路径,打开模式) as 变量:变量.操作()
'''with open('./1.txt','r+',encoding='utf-8') as fp:res = fp.read()print(res)

文件的路径:

文件路径  路径 url  统一资源定位符#相对路径: 就像给别人指路一样: 在某某大厦的对面。。。针对文件的相对路径的表示,从当前目录开始计算1.txt ==>  具体文件前没有任何表示时,默认为当前目录 和 ./1.txt 是一个位置./1.txt  ==> ./ 代表当前目录中的 1.txt../1.txt ==> ../ 代表当前目录中的 上一级目录中的1.txt
#绝对路径: 就像买东西写收货地址一样: 北京市海淀区中关村大街128号xxx小区,xxx号楼xx单元xx室windows:  c:/users/appdata/1.txtLinux: /user/home/yc/1.txt

打开的模式:

#一,基础模式:  w  r  x  aw w模式  write 写入模式1。 文件如果不存在,则创建这个文件2。 文件如果存在,则打开这个文件,并且清空文件内容3。 文件打开后,文件的指针在文件的最前面r r模式: read  读取模式1。 如果文件不存在,则报错2。 文件如果存在,则打开文件3。 文件指针在文件的最前面x x模式: xor 异或模式1。文件不存在,则创建这个文件2。文件已存在,则报错(防止覆盖)3。文件的指针在文件的最前面a a模式: append 追加模式1。文件不存在,则创建文件2。文件如果存在,则打开文件 (和w模式的区别在于。a模式打开文件后不会清空)3。文件指针在当前文件的最后#二,扩展模式:b b模式  bytes   二进制+ +模式  plus    增强模式(可读可写)
#三,文件操作模式的组合:w,r,a,xwb,rb,ab,xb,w+,r+,a+,x+wb+,rb+,ab+,xb+参数 encoding 可选参数,设置文件的字符集,如果是一个二进制的文件时,不需要设置字符集encoding='utf-8'
# 写入文件操作
# 1。打开文件
fp = open('./1.txt','a',encoding='utf-8')
# 2。写入 文件
fp.write('\n你好')
# 3。关闭文件
fp.close()
# 读取操作
# 1。打开文件
fp = open('./1.txt','r',encoding='utf-8')
# 2。读取文件
res = fp.read()
# 3。关闭文件
fp.close()
print(res)# 文件操作的 高级写法
'''
with open(文件路径,打开模式) as 变量:变量.操作()
'''
# w+ 即可读又可写  注意w模式的特点,是打开文件后直接清空了文件
# r+ 即可读又可写
# a+ 追加写,并且可读
# x+ 异或
with open('./1.txt','r+',encoding='utf-8') as fp:# 设置指针的位置fp.seek(20)  # 设置当前指针的位置fp.write('cc')fp.seek(0)  # 设置当前指针的位置 seek(0),最开始的位置res = fp.read()print(res)
# 写入相关函数
vars = 5211  # int类型无法写入
vars = ['hello','world','1','2']
vars = {'name':'zs','age':'22'}
with open('./test/4.txt','w',encoding='utf-8') as fp:# fp.write(vars)  # 只能写入字符串类型数据fp.writelines(vars)  # 可以写入容器类型数据,注意容器中的元素也必须是字符串类# 读取相关函数
with open('./test/4.txt','r',encoding='utf-8') as fp:fp.seek(3)  # 设置指针的位置res = fp.read()  # 默认从当前指针开始读取到最后res = fp.read(3)   # 设置读取的字节长度res = fp.readline()  # 一次只读取一行内容print(res)res = fp.readline(3) # 可以读取当前行中的指定字节数res = fp.readlines()  # 一次读取多行数据,每一行作为一个元素,返回一个列表res = fp.readlines(6)  # 按照行进行读取,可以设置读取的字节数,设置的字节数不足一行按一行算print(res)# seek() 设置文件指针位置
with open('./test/4.txt', 'r+', encoding='utf-8') as fp:# a+模式,指针默认在文件的最后,所以直接读是读取不到内容的fp.seek(0)  # 把文件指针设置到文件的开头位置fp.seek(10)   # 设置文件指针的位置fp.seek(0,2)  # 0,2是把文件指定设置在文件的末尾fp.write('\n00000')res = fp.read()# truncate() 截断文件内容
with open('./test/4.txt','r+',encoding='utf-8') as fp:res = fp.truncate(5)# 默认从文件的首行的首个字符开始进行截断,截断的长度为size个字节数,# size如果为0,则从当前位置截断到最后print(res)

练习题:注册与登录

注册功能

1。需要用户名和密码以及确认密码
2。注册时如果用户名已经存在,则不能再次注册

登录功能

1。需要使用已经注册的用户信息登录
2。密码输入错误3次后,锁定账户信息(不能再使用这个账户进行登录操作)

# 登录和注册功能的合并# 专门定义数据变量,存放已经注册的用户信息
userlist = [] # 存放所有的用户名
pwdlist = [] # 存放所有的用户密码
blacklist = [] # 存放所有的黑名单用户# 读取所有数据的方法
def readallusers():# 读取所有的注册信息 使用a+模式打开文件,在调整指针位置,防止文件不存在时报错with open('./user.txt','a+',encoding='utf-8') as fp:fp.seek(0) # 调整当前的的指针位置到文件头部res = fp.readlines()  # 按照每一行读取所有的用户数据for i in res:  # 循环读取的每一行数据r = i.strip()  # 处理每一个换行 admin:123\n ==> admin:123arr = r.split(':')  # admin:123 ==> ['admin','123']userlist.append(arr[0]) # 把用户名追加到 用户名列表中pwdlist.append(arr[1])  # 把用户对应的密码 追加到 用户密码 列表中# 获取黑名单数据with open('./black.txt','a+',encoding='utf-8') as fp:fp.seek(0)res = fp.readlines()for i in res:blacklist.append(i.strip())# 封装一个函数 完成注册功能
def register():# 定义一个变量。用于控制外循环site = True# 循环执行 用户名输入操作while site:# 用户输入用户名username = input('欢迎注册,请输入用户名:')# 用户名需要检测是否已经存在if username in userlist:print('当前用户名已经存在,请更换用户名')else:# 循环输入密码,如果都正确,循环结束,while True:# 输入密码pwd = input('请输入密码:')# 检测密码从长度不能低于3位if len(pwd) >= 3:# 输入确认密码repwd = input('请输入确认密码:')# 检测确认密码是否和密码一致if pwd == repwd:# 用户名和密码都正确,就可以写入文件  用户名:密码# 打开文件,写入数据with open('./user.txt','a+',encoding='utf-8') as fp:fp.write(f'{username}:{pwd}\n')print(f'注册成功:用户名:{username}')# 结束循环# 结束外循环site = False# 结束内循环breakelse:print('两次密码不一致,请重新输入')else:print('密码格式不正确')# 封装函数实现登录功能
def login():# 定义变量 控制登录的外循环islogin = True# 定义变量,用户密码的错误次数的检测errornum = 3# 循环执行用户的登录while islogin:# 获取用户登录时输入的用户名username = input('欢迎登录,请输入您的用户名:')# 检测当前用户名是否存在if username in userlist:# 检测用户是否属于锁定状态? 判断是否在黑名单中if username in blacklist:print('当前用户属于锁定状态,不可登录,请去忏悔把。。。')else:# 定义循环,执行密码输入while True:# 让用户输入密码pwd = input('请输入您的密码:')# 获取用户名在用户列表中的索引。inx = userlist.index(username)# 检测用户输入的密码是否正确if pwd == pwdlist[inx]:print('登录成功')# 结束循环islogin = False # 结束外循环变量break  # 结束内循环else:# 密码错误,则修改次数变量errornum -= 1# 判断当前的密码错误次数 == 0if errornum == 0:print('曾经有那么几次机会摆在你的面前。你没有把握住,恭喜你,成功的锁定了你的账户,请联系相关人员进行忏悔把!')# 如何才能锁定账户信息? 把需要锁卡的用户拉入黑名单with open('./black.txt','a+',encoding='utf-8') as fp:fp.write(username+'\n')# 结束循环islogin = False  # 结束外循环变量break  # 结束内循环else:print(f'密码输入错误,请重新输入密码,你还有{errornum}次机会')else:#用户名不存在print('用户名错误,请重新输入')# 判断当前的脚本是否作为一个主进程脚本在执行
if __name__ == '__main__':# 这里的代码,只有在使用python解释器直接运行时才执行# 如果当前的脚本。作为了一个模块被其它的文件导入后使用,那么这个地方的代码不会执行# 因此这个地方的代码 适合写当前脚本中的一些测试,这样不会影响其它脚本# 调用初始化方法,加载数据readallusers()while True:vars = '''*****************************************    登录(1)  注册(2) 退出(任意内容)   *****************************************'''print(vars)# 让用户选择对应的操作num = input('请输入对应的序号,体验功能:')if num == '1':login()elif num == '2':register()else:print('欢迎下次体验。。。')break# 扩展题: 可以实现 购物,定义一些商品和对应的价格,每个用户有100原,完成购物即扣款

Python中的File(文件)操作相关推荐

  1. 详解Python中的File(文件)操作

    目录 Python中的File(文件)操作 写入文件的操作: 读取文件的操作: 一.文件操作相关函数 1. open() 打开文件 2. seek() 设置文件指针的位置 3. write() 写入内 ...

  2. Python中open读写文件操作

    Python内置了读写文件的函数open() 1.读文件(使用内置的open()函数) f = open('/Users/michael/test.txt', 'r') 'r' 表示读,我可以可以利用 ...

  3. python 创建目录_第二天:Python中目录及文件操作

    Python创建目录 使用os模块 mkdir创建一级目录,但不会创建父级目录 #创建test目录,成功 import os os.mkdir('E:test')##若无父级目录python,则创建t ...

  4. python使用方法-在Python中使用next()方法操作文件的教程

    next()方法当一个文件被用作迭代器,典型例子是在一个循环中被使用,next()方法被反复调用.此方法返回下一个输入行,或引发StopIteration异常EOF时被命中. 与其它文件的方法,如Re ...

  5. python脚本怎么使用_在Python中使用next()方法操作文件的教程

    next()方法当一个文件被用作迭代器,典型例子是在一个循环中被使用,next()方法被反复调用.此方法返回下一个输入行,或引发StopIteration异常EOF时被命中. 与其它文件的方法,如Re ...

  6. python中的打开文件的用法_python基础之文件操作

    文件操作 一 介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周 ...

  7. python中执行py文件出错(提示File “<stdin>”,line 1,SyntaxError:invalid syntax)

    python中执行py文件出错(提示File "<stdin>",line 1,SyntaxError:invalid syntax) 解决办法: 上图中已通过输入py ...

  8. java file文件读取文件内容_java中的File文件读写操作

    之前有好几次碰到文件操作方面的问题,大都由于时间太赶而没有好好花时间去细致的研究研究.每次都是在百度或者博客或者论坛里面參照着大牛们写的步骤照搬过来,之后再次碰到又忘记了.刚好今天比較清闲.于是就在网 ...

  9. Python中常用的一些操作总结(未完待续)update @ 2017-5-18

    写在前面的话 其实也没有什么可以写的,或者说完全没有价值.因为你只要动一动手指就可以在Google上找到我要写的这些东西.只是我还不习惯好久没有碰我的blog,但是我又不想写没有价值的东西.或许有价值 ...

最新文章

  1. 【CVPR2022】UniVIP:自监督视觉预训练的统一框架
  2. Swift 扩展存储属性
  3. 小技巧—设置IIS禁止网站放下载电影文件
  4. winform响应时间最长是多少分钟_史上最短职业赛是多少时间?《王者荣耀》中国队只花了三分钟...
  5. Zookeeper 详讲(笔记)1
  6. SQL-Server使用点滴(一-数据对象篇)
  7. DDD 领域驱动设计落地实践:六步拆解 DDD
  8. 媒体查询笔记、 @media
  9. html checkbox 透明度,【求助】关于表达式checkbox中不透明度的设置
  10. DNF最新纯图色脚本框架2022-4-27
  11. 微信收款播报器提示服务器断开,微信收款语音提醒开启后收不到语音提醒怎么办? 专家详解...
  12. 25.人脸关键点检测
  13. C语言C++制作游戏外挂,一个简单的内存外挂!
  14. 浏览器是怎么得到一个网页的
  15. 浅谈Thumbnails压缩gif图片质量的实现方式
  16. navicat怎么备份数据和同步两个数据库
  17. c free()函数了解
  18. 运营商大数据----三大运营商构建大数据下的企业获客应用场景
  19. 网络安全突发事件应急处置工作预案
  20. jspssm小型药店药品管理系统

热门文章

  1. vue虚拟DOM原理
  2. oracle之trunc函数
  3. AFNetworking源码简单分析
  4. mysql从服务器能否修改数据,mysql数据库操作新手入门,手把手的教会你 _数据库教程...
  5. 颜色的前世今生12·RGB显色系统详解(中)
  6. java工程项目的结构拆分
  7. 英文商务电邮实用技巧
  8. Java 小数点计算和四舍五入保留两位数
  9. 关于H5页面背景音乐播放的问题
  10. 我理解的「向下兼容」