python中文件操作相关基础知识

文件的概念

  1. 1,文件的概念?
  2. 文件就是操作系统暴露给用户操作硬盘的快捷方式
  3. 当我们双击一个文件进行打开时,其实就是把硬盘中的数据加载到了内存中,然后展示给我们
  4. ctrl+s 保存文件时,其实就是命令系统立刻把内存中的数据刷新到硬盘中。
  5. 2.python代码如何打开文件
  6. 方式1
  7. f = open('文件路径','读写模式','编码设置')
  8. f.close
  9. # 当打开文件使用完毕后需要关闭,方式1系统不会帮助你关闭文件
  10. 方式2:
  11. with语法
  12. with open(r'文件绝对路径','读写模式','编码设置') as 变量名:
  13. # 文件路径前面加上r 养成良好习惯,避免文件路径中含有特殊字符
  14. with语法不需要关闭文件,当此语法进行完毕系统会自动关闭文件
  15. 也可以一次性打开多个不同的文件
  16. with open(r'文件绝对路径','读写模式','编码设置') as a,open(r'文件绝对路径','读写模式','编码设置') as b:

文件读写模式

  1. 1,什么是读写模式
  2. 当我们打开一个文件时,我们要告诉计算机用什么方式打开有3种方式(r只读模式 w写入模式 a追加模式)
  3. 2.只读模式 'r'
  4. with open(r'/Users/moongod/Desktop/测试.txt','r',encoding='utf8') as f:
  5. f.read()
  6. 读写模式下只能对文件 只能读只能看不能写
  7. # 此模式下,如果文件路径不存在 则程序直接报错
  8. # 如果文件使用read方法可以直接读取
  9. # 如果文件较大 也可以使用for循环进行一行行阅读
  10. 3.只写模式 'w'
  11. with open(r'/Users/moongod/Desktop/测试.txt','w',encoding='utf8') as f:
  12. f.write('写入的内容或变量名等')
  13. f.write('写入的内容或变量名等\n')
  14. 只写模式下,如果文件被写入内容,则默认会清除之前的所有内容,只保留当前刚刚写下的内容
  15. # 注意 如果写入的内容需要换行,需要手动输入\n 换行符处理。
  16. # 并且在数据比对的时候 记得改文件换行时 有\n存在
  17. # 如果路径不存在,则会自动创建该文件
  18. 4.追加模式 'a'
  19. with open(r'/Users/moongod/Desktop/测试.txt','a',encoding='utf8') as f:
  20. f.write('写入的内容或变量名等')
  21. f.write('写入的内容或变量名等\n')
  22. 追加模式下。写入的内容会默认添加到文件尾部。
  23. # 如果需要换行 记得在文件最前面加上换行符 \n
  24. # 如果路径不存在,则会自动创建该文件
  25. 5 pass用法
  26. with open(r'/Users/moongod/Desktop/测试.txt','a',encoding='utf8') as f:
  27. pass
  28. # 用于补全语法,无任何实际含义,有时候我们不知道写什么时,可以先写一个pass

文件操作类型

  1. 1.文本模式 t
  2. 目前我们学的都是针对纯文本的文件操作,r w a 模式
  3. #只能用来操作纯本文文件
  4. #读写时都是以字符为单位
  5. #需要设置encoding参数
  6. 2.二进制模(bytes模式)
  7. 不是默认的模式,需要手动指定 rb wb ab
  8. #可以操作任意类型文件
  9. #读写都是以bytes为单位的
  10. #不需要encoding参数,因为它已经是二进制了

文件的方法

  1. 1read()
  2. 文件.read()
  3. #一次性读取文件内所有内容,读取完后光标停留在文件末尾。如果在文件较大时不建议的使用 会导致内存溢出
  4. 2.for循环
  5. for line in 文件名:
  6. #一行行读取文件内容,避免内存溢出 (建议使用)
  7. 3.readline()
  8. 文件.readline
  9. #一次只读一行内容
  10. 4.readlines()
  11. 文件.readlines()
  12. # 一次性读取文件内容 会按照行数组织成列表的一个个数据值
  13. 5.readable()
  14. 文件.readable() 结果为 布尔值
  15. #判断文件是否具备读数据的能力
  16. 6.write()
  17. 文件.write() #(这里可以填写任意数据)
  18. 7.writeable()
  19. 判断文件是否具备写数据的能力
  20. 8.writelines()
  21. 接收一个列表 一次性将列表中所有的数据值写入
  22. 9.flush()
  23. 将内存中文件数据立刻刷到硬盘 等价于ctrl + s

文件内光标的移动

  1. 关键词
  2. seek
  3. 文件.seek(00)
  4. # seek(offset, whence)
  5. offset是位移量 以字节为单位
  6. whence是模式 0 1 2
  7. 0是基于文件开头
  8. 文本和二进制模式都可以使用
  9. 1是基于当前位置
  10. 只有二进制模式可以使用
  11. 2是基于文件末尾
  12. 只有二进制模式可以使用
  13. #可以控制文件光标的位置

文件内容修改

  1. 1.先了解电脑硬盘修改数据原理
  2. 当我们把一些文件或数据等保存到硬盘时,其实就是对硬盘进行了刻字,如果我们需要修改文件时,其实就是硬盘把之前刻的字抹除再次重新刻上了你修改过的整体数据
  3. 硬盘删除数据原理
  4. 当你在硬盘中删除文件或数据时,其实并没有删除,只是把文件和数据的状态从可用占有状态,改为了不可用不显示不占用的状态,当没有新的数据覆盖上时,其实之前删除的数据还是存在的。
  5. 当有新的数据覆盖上旧数据才算是被真正删除掉。
  6. 2.python中修改文件内容
  7. 覆盖法:
  8. with open ('测试.txt','r',encoding='utf8') as f:
  9. d = f.read()
  10. with open ('测试.txt','w',encoding='utf8') as f:
  11. f.write(d.replace('修改内容''新的内容'))
  12. #先打开文件,然后使用另一个变量获取文件所有内容,然后再次使用写的模式打开文件
  13. #然后在文件中重新写入数据,使用replace方法替换原来的数据
  14. 换地方重新写:
  15. import os
  16. with open('a.txt', 'r', encoding='utf8') as read_f,
  17. open('.a.txt.swap', 'w', encoding='utf-8') as write_f:#.swap 临时文件
  18. for line in read_f:
  19. write_f.write(line.replace('tony', 'kevinSB'))
  20. os.remove('a.txt') # 删除了源文件
  21. os.rename('.a.txt.swap', 'a.txt') # 把临时文件改为了源文件名称
  22. #在用户看来 感觉如同修改了源文件一样,其实是创建了一个临时文件重新写的

文件操作小练习

  1. 1.制作一个建议复制器,输入复制文件路径,输入新的文件路径 进行复制
  2. file_path = input('请输入需要拷贝的文件路径').strip()
  3. new_path = input('请输入新的文件路径').strip()
  4. with open(file_path,'rb') as f, open(new_path,'wb') as f1:
  5. # 只读模式打开源文件 写入模式打开新文件,新文件不存在则会自动创建
  6. for line in f:
  7. # 使用临时变量 line 遍历 源文件
  8. f1.write(line)
  9. # 写入新文件,写入内容是 遍历的每一行的源文件 line
  10. print('拷贝成功')
  11. 2.利用文件充当数据库编写用户登录、注册功能 #文件名称: userinfo.txt
  12. # 用户可以连续注册
  13. # 用户可以多账号切换登录(多用户)
  14. # 文件内有多个用户信息
  15. while 1:
  16. print('''
  17. 1.注册账户
  18. 2.登录账户
  19. ''')
  20. cmd = input('请输入您要进行的指令').strip()
  21. if cmd == '1':
  22. with open('/Users/moongod/Desktop/userinfo.txt', 'a', encoding='utf8') as d:
  23. pass # 此代码只是为了先创建一个文件
  24. username = input('请输入用户名')
  25. with open('/Users/moongod/Desktop/userinfo.txt', 'r', encoding='utf8') as f:
  26. #读取文件
  27. for line in f: #临时变量去代替文件中的每一行
  28. real_name, real_pas = line.split('|') # 解压赋值法 单行文本切割 获得已存在的账户和密码
  29. if real_name == username: # 判断注册的用户名是否和文本中真实用户名冲突
  30. print('用户名已被注册')
  31. break
  32. else:
  33. password = input('请输入密码')
  34. with open('/Users/moongod/Desktop/userinfo.txt', 'a', encoding='utf8') as f1:
  35. f1.write(f'{username}|{password}\n') # 存数据是规律组合 方便以后取
  36. print(f'注册成功,账户名:{username}')
  37. elif cmd == '2':
  38. username = input('请输入用户名')
  39. password = input('请输入密码')
  40. with open('/Users/moongod/Desktop/userinfo.txt', 'r', encoding='utf8') as f:
  41. for line in f: # 账号|密码
  42. real_name, real_pas = line.split('|') # 获得真实的账号密码
  43. if username == real_name and password == real_pas.strip('\n'): #做对比,注意真实的密码后面有换行符 需要去掉
  44. print('登录成功')
  45. break
  46. else:
  47. print('账号或密码错误')
  48. else:
  49. print('请输入正确的编号')

python中文件操作相关基础知识的更多相关文章

  1. python中文件操作的六种模式及对文件某一行进行修改的方法

    一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...

  2. python中文件操作的其他方法

    前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ...

  3. python中文件操作的基本方法

    在python中对一个文件进行操作,分为三大步:打开,操作,关闭 首先创建一个文件hello,里面内容为hello world 一.打开一个文件 1.#open(‘文件名或文件路径’,‘操作模式’,文 ...

  4. Python中文件操作2——shutil模块

    1 文件操作 文件有很多的操作,之前的文件操作中介绍了内建函数对文件的打开.读取以及写入,这三种操作是对文件基本的使用.文件还有复制.删除.移动.改变文件的属主属组等操作.下面主要看os模块和shut ...

  5. Python 中文件操作

    上代码: import os import os.path rootdir = "d:/code/su/data" # 指明被遍历的文件夹 for parent,dirnames, ...

  6. python中文件操作

      打印进度条

  7. 『无为则无心』Python基础 — 41、Python中文件的读写操作(一)

    目录 1.文件操作步骤 2.文件的读写操作 (1)文件的打开 (2)打开文件模式 (3)获取一个文件对象 (4)关于文件路径 1.文件操作步骤 当我们要读取或者写入文件时,我们需要打开文件,在操作完毕 ...

  8. 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容

     孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...

  9. python 中文件输入输出及os模块对文件系统的操作

    整理了一下python 中文件的输入输出及主要介绍一些os模块中对文件系统的操作. 文件输入输出 1.内建函数open(file_name,文件打开模式,通用换行符支持),打开文件返回文件对象. 2. ...

  10. 深入理解mysql之BDB系列(1)---BDB相关基础知识

        深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富   一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...

随机推荐

  1. centos7安装sonarqube-9.2.4

    官方文档地址:https://docs.sonarqube.org/latest/requirements/requirements/ 使用 sonarqube 对 java 项目代码进行扫描的时候, ...

  2. Elasticsearch Reindex性能提升10倍+实战

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484134&idx=1&sn=750249a ...

  3. 7.nexus版本升级

    nexus-3.14.0升级到3.15.2 首先来看下原来的服务目录: nexus-3.14.0-04 sonatype-work 注意:nexus-3.14.0-04是应用程序包,sonatype- ...

  4. 【前端必会】tapable、hook,webpack的灵魂

    背景 什么是tapable.hook,平时做vue开发时的webpack 配置一直都没弄懂,你也有这种情况吗? 还是看源码,闲来无聊又看一下webpack的源码,看看能否找到一些宝藏 tapable和 ...

  5. Flask 框架:运用Echarts绘制图形

    echarts是百度推出的一款开源的基于JavaScript的可视化图表库,该开发库目前发展非常不错,且支持各类图形的绘制可定制程度高,Echarts绘图库同样可以与Flask结合,前台使用echar ...

  6. 洛谷P3870 [TJOI2009] 开关 (线段树)

    简单的省选题...... 打异或标记即可. 1 #include<bits/stdc++.h> 2 const int N=2e5+10; 3 using namespace std; 4 ...

  7. IDEA插件MyBatisCodeHelper-Pro的破解与使用

    0.前言 本文中的IDEA版本是2020.3,使用的插件版本是MyBatisCodeHelper-Pro 2.8.9,3.0+版本目前没找到激活的方式 和本文插件类似的还有mybatisX,但我不喜欢 ...

  8. 面向对象day1,创建类和对象时,对象内存是在哪

    上面我创建了两个类,一个是测试类,在测试包里面,一个是生产类,在src文件里面.可以看到,调用类里面的对象的时候需要先创建一个对象,然后通过对象来调用类里面的属性和方法等,但是这个时候我得先记录一下, ...

  9. 后端框架的学习----mybatis框架(3、配置解析)

    3.配置解析 1.核心配置文件 2.环境配置(environment) 3.属性(properties) 可以通过properties属性来实现引用配置文件 这些属性可以在外部进行配置,并可以进行动态 ...

  10. 【Odoo】Odoo16-性能优化提升

    上海序说科技,专注于基于Odoo项目实施,实现企业数智化,助力企业成长. 老韩头的开发日常,博客园分享(2022年前博文) 10月12日,Odoo16版本正式发布,本文将就Odoo官方在性能方面做的优 ...