1.文件处理

什么是文件处理:修改存储的信息。

什么是文件:操作系统提供的虚拟概念,存储信息(用二进制存储信息)

操作核心是:读和写。

1.1操作文件的流程:

1.打开文件流程:1.文件路径",2.打开模式(w-->write ,at追加值)",3."字符编码(utf-8,gbk...)

1.2在硬盘中读取数据:

如果我们需要打开一个文件,需要向操作系统发起请求,要求操作系统打开文件,占用操作系统资源。Python中使用open()方法可以打开某个具体的文件,open()方法内写入文件路径。

open(r'D:\上海python12期视频\python12期视频\day 09\test.py','w',encoding='utf8') # encoding指定写入的编码格式

打开文件:

f = open(r'F:\python12期上海上课内容\day09\test.py','w',encoding='utf8')  #创建了一个文件。
# encoding指定写入的编码格式

打开文件之后,文件不仅占用了内存,他还对应了操作系统打开的以文件,相当于使用文本编辑器打开了一个文件。并且我们说了我们操控文件只是为了读和写,因此打开文件并不是目的,读和写才是目的,接下来我们尝试如何读写文件。

  • r : 文件的读取操作 (只读) 若没有要读取得文件则报错
# read模式打开文件
f = open(r"E:\pyrhon7期课上随写题\day9\test.py","r",encoding="utf-8")# encoding指定写入的编码格式
data = f.read()
print(data)  #打开文件后,给个变量,可以读取其中的值。
# 读取文件内容,向操作系统发起读请求,会被操作系统转成具体的硬盘操作,将内容由硬盘读入内存
data = f.read()
print(data)
# 由于Python的垃圾回收机制只回收引用计数为0的变量,但是打开文件还占用操作系统的资源,所以我们需要回收操作系统的资源资源
# del f 只是回收变量f
f.close()  ## 告诉操作系统关闭文件
1.3写入数据

w : 文件的写入操作 没有该文件则创建,每一次写入都会清空文件再写入

(w-->清空写入)

#write  模式打开文件   wt: 只写(w清空文件后写入),不可读
f = open(r"E:\pyrhon7期课上随写题\day9\test.py","wt",encoding="utf-8")# encoding指定写入的编码格式
f.write("""我爱你亲爱的
姑娘""")
f.flush()  # 快速保存,你可以不使用
f.close()# 告诉操作系统关闭文件
f = open(r"E:\pyrhon7期课上随写题\day9\test.py","r",encoding="utf-8")
data = f.read()
print(data)  #我爱你亲爱#的姑娘
1.4文件的操作流程:
1.打开文件: wt: 只写(w清空文件后写入),不可读
f = open(r'F:\python12期上海上课内容\day09\test.py','w',encoding='utf8')  #创建了一个文件。
# encoding指定写入的编码格式
# 2. 修改/读取文件
f.write('''
我爱你亲爱的
姑娘
''')
# 3. 保存文件
f.flush()  # 快速保存,你可以不使用# 4. 关闭文件: python真的能操控文件?python通过操作系统操作文件
# del f
f.close()  # 告诉操作系统关闭文件

2.文件的三种打开模式

2.1文件打开模式之r模式

r: read,只读模式,只能读不能写,文件不存在时报错

读取:r -->read:文件的读取(只读) rt --> read text。

#  rt  read_text 读文本内容 只读
f = open(r"E:\pyrhon7期课上随写题\day9\test.py","rt",encoding="utf-8")# encoding指定写入的编码格式
# f.write("""我爱你亲爱的
姑娘""")
data = f.read()
print(data) #我爱你亲爱的姑娘            w时:计算字符串的长度:8
print(f.readable()) # 判断是否可读 Ture  w时:false
print(f.writable()) # 判断是否可写 False w时:Ture#####:
# data = f.read()  # 读取所有文本内容
# print(data)

2.2文件打开模式之w模式

w:write 只能写,不能读,文件存在的时候回清空文件后再写入内容;文件不存在的时候会创建文件后写入内容。

# 1.文件的写入操作  w  wt: 只写(w清空文件后写入),不可读
# (1) 打开文件
f = open("ceshi1.txt",mode="w",encoding="utf-8") #打开冰箱
# encoding指定写入的编码格式
# (2) 写入内容
'''write("字符串")'''
f.write("把大象塞进去") #放进大象
# (3) 关闭文件
f.close() #把冰箱门关上

2.3文件打开模式之a模式

a: 可以追加。文件存在,则在文件的末端写入内容;文件不存在的时候会创建文件后写入内容。

# at  # at: 只写入(追加写入)
f = open('liangjing.txt', mode='at', encoding='utf8')
# encoding指定写入的编码格式
print(f"f.readable(): {f.readable()}")
f.write('Owen 真帅呀\n')  # '\n'是换行符
f.write('Owen,Owen, you drop, I drop.')
f.write('Owen 帅的我五体投地')
f.close()
#: f.readable(): False

encoding指定写入的编码格式:

# encoding指定写入的编码格式
f = open(r"E:\pyrhon7期课上随写题\day9\test.py","at",encoding="utf-8")
f = write("你好")
f = open(r"E:\pyrhon7期课上随写题\day9\test.py","at",encoding="utf-8")
# print(f.read())

2.4打开文本的两种方法

t --> 文本; b --> 二进制模式: 这两个东西不单独使用,一般与r/w/a联用,不需要encoding

# f = open(r'D:\上海python12期视频\python12期视频\day 09\test.py', 'rb')
# print(f.read())# b模式一般用于图片/音频/视频的保存
import requestsresponse = requests.get('http://photocdn.sohu.com/20120708/Img347586981.jpg')
data = response.content  # 拿到图片的二进制
# print(data)# w和a模式可以自动创建文件
f = open(r'D:\上海python12期视频\python12期视频\day 09\test.jpg', 'wb')

3.绝对路劲和相对路径。

绝对路径: 从盘符开始 D:\上海python12期视频\python12期视频\day 09\test.py

相对路径: 执行文件(当前运行的文件)的文件夹下的文件名,执行文件和打开文件属于同一文件夹下

4.with管理网文件上下文。

之前我们使用open()方法操作文件,但是open打开文件后我们还需要手动释放文件对操作系统的占用。但是其实我们可以更方便的打开文件,即Python提供的上下文管理工具——with open()。

with open('34a.txt', 'rt', encoding='utf8') as f:print(f.read())

with open()方法不仅提供自动释放操作系统占用的方法,并且with open可以使用逗号分隔,一次性打开多个文件,实现文件的快速拷贝。

with open('34a.txt', 'rt', encoding='utf8') as f,\open('35r.txt', 'wb') as fw:
f.write(f.read())

5.文件的高级应用。

# wt
with open('liangjing.txt', 'wt', encoding='utf-8') as fw:print(fw.readable())   #Falseprint(fw.writable())   #Ture# w+t  可写可读 w+ 和 w 没有任何区别
with open('liangjing.txt', 'w+t', encoding='utf-8') as fw:print(fw.readable()) #Tureprint(fw.writable())  #Ture# r+t
with open('liangjing.txt', 'r+t', encoding='utf-8') as fr:print(fr.readable())print(fr.writable())# 可写可读 a+ a模式默认光标在尾部
# with open('liangjing.py','a+',encoding='utf8') as fw:
#     print(fw.readable())
#     print(fw.writable())
#     fw.seek(0,0)
#     print(fw.read())

注意

  • tell() 返回的是当前光标左侧所有的 字节 数
  • seek() 调整指针的位置(里面的参数代表 字节 个数)
    • seek(0) 将光标直接移动到文件的 开头
    • seek(0,2) 将光标直接移动到文件的 末尾
  • read() 读取字符的个数(里面的参数代表 字符 个数)
    • 如果打开的模式是b字节流模式,读取的单位是字节;如果正常打开,读取的是字符数
  • 怎么能让文件自动关闭?
    • with... 打开文件 as... 文件别名
  • 函数参数里放字节数的,要注意中文,如果移动的位置不是一个完整的中文,会报错

6.文件的修改:

1.方式一:将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)

import oswith open('37r.txt') as fr, \open('37r_swap.txt', 'w') as fw:data = fr.read()  # 全部读入内存,如果文件很大,会很卡data = data.replace('tank', 'tankSB')  # 在内存中完成修改fw.write(data)  # 新文件一次性写入原文件内容# 删除原文件
os.remove('37r.txt')
# 重命名新文件名为原文件名
os.rename('37r_swap.txt', '37r.txt')
print('done...')

2.方法二:将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件。

import oswith open('37r.txt') as fr,\open('37r_swap.txt', 'w') as fw:# 循环读取文件内容,逐行修改for line in fr:line = line.replace('jason', 'jasonSB')# 新文件写入原文件修改后内容fw.write(line)os.remove('37r.txt')
os.rename('37r_swap.txt', '37r.txt')
print('done...')

7.登陆注册

注册

# count = 0
# while count < 3:
#     username_inp = input('请输入你的用户名:')
#     pwd_inp = input('请输入你的密码:')
#     re_pwd_inp = input('请在此输入你的密码:')
#
#     if not pwd_inp == re_pwd_inp:
#         print('两次密码输入不一致')
#         count += 1
#         continue
#
#     with open('user_info.txt', 'a', encoding='utf8') as fa:
#         fa.write(f'{username_inp}:{pwd_inp}\n')  # :表示用户名和密码的分割;|用户和用户之间的分割
#         fa.flush()
#         break

登陆:

username_inp = input('请输入你的用户名:')
pwd_inp = input('请输入你的密码:')with open('user_info.txt', 'r', encoding='utf8') as fr:for user_info in fr:username, pwd = user_info.split(':')if username.strip() == username_inp and pwd.strip() == pwd_inp:  # strip可以去掉两端的换行符print('登录成功')break# else:#     continue  # continue一般不写在最后一行else:print('登录失败')

文件处理,文件的三种打开模式,绝对路劲和相对路径,with管理网文件上下文,文件的高级应用,文件的修改,登陆注册。...相关推荐

  1. Python文件的三种打开模式

    文件操作的基础模式有三种(默认的操作模式为r模式): r模式为read w模式为write a模式为append 文件读写内容的格式有两种(默认的读写内容的模式为b模式): t模式为text b模式为 ...

  2. Python对文件的三种打开方式以及with管理上下文

    文件的三种打开方式以及with管理上下文 一.文件的三种打开方式 1.1 只读 f = open(r'D:\pycharm\python\123.txt','r',encoding='utf8') d ...

  3. linux文件编辑器的三种模式,Linux中文本编辑器三种工作模式切换及vi编辑器三种工作模式下命令详解...

    文本编辑器的作用 创建或修改文本文件 维护Linux系统中的各种配置文件 Linux中最常用的文本编辑器 Linux中最常用的文本编辑器 vi:类UNIX操作系统的默认文本编辑器 vim:vim时vi ...

  4. python打开文件不存在-Python判断文件是否存在的三种方法

    原标题:Python判断文件是否存在的三种方法 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件 ...

  5. win10计算机文件夹选项在哪里,w10文件夹选项在哪_win10打开文件夹选项的三种方法...

    win10系统的文件夹选项在哪里?很多使用win1032位旗舰版系统的用户都会碰到需要对文件夹进行一些设置的情况,这时往往需要用到文件夹选项,可能有网友不知道文件夹选项在哪.没关系,下面小编就来为大家 ...

  6. C#利用WCF改进文件流传输的三种方式

    摘要:本文介绍C#利用WCF改进文件流传输的三种方式:MTOM模型.基于同步传输的异步回调模型.基于异步传输的异步模型,并提供相应的实现代码供参考. - WCF在跨域传输使用了两种模型的方法调用:一种 ...

  7. 文件上传的三种方式-Java

    前言:负责,因为该项目他(jetty嵌入式开始SpringMvc)实现文件上传的必要性,并拥有java文件上传这一块还没有被曝光.并 Http 更多晦涩协议.因此,这种渐进的方式来学习和实践上载文件的 ...

  8. (0095)iOS开发之本地文件预览的三种方法(3)

    (0090)iOS开发之本地文件预览的三种方法(1) (0094)iOS开发之本地文件预览的三种方法(2) 用功能强大的Webview来实现文件预览功能 我导入的 ios.pdf 前两种可以打开,但是 ...

  9. java中三种方法_Java文件I/O的三种方法

    Java文件I/O的三种方法 RandomAccessFile是不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和DataOutput接口之外(Data ...

最新文章

  1. quirks 模式是什么?它和 standards 模式有什么区别_什么是二级分销模式
  2. 【快乐水题】997. 找到小镇的法官
  3. OGNL中#和%的用法
  4. 【原】Python基础-函数
  5. Office 365也是.NET Core应用开发新战场
  6. 实现mvcc_MySQL 的多版本并发控制(MVCC) 是干啥的?
  7. Oracle 12C R2-新特性-PDB的磁盘I/O(IOPS,MBPS)资源管理
  8. EDUCoder编程练习题解(一维数组和二维数组)
  9. java 按钮垂直居中_WPF按钮中的文本内容未垂直居中
  10. Android实现App版本检测、下载与安装新版本apk
  11. 中国知网论文破解下载 (附:常用的网址)
  12. 稳压二极管和雪崩二极管的工作原理及选型学习总结
  13. netbeans php下载,Netbeans7下载和安装
  14. IOS点击事件延迟300ms踩坑
  15. java实现sug,Java SuggestionResult類代碼示例
  16. 【卡尔曼滤波】我所理解的卡尔曼滤波
  17. 一个新手的评价---人机交互方面(有些不搭题
  18. Python判断指定日期是不是法定节假日
  19. 【XSY2515】管道(pipe)(最小生成树+倍增lca)
  20. 【论文翻译笔记】Test Roll: Profit-Maximizing A/B Tests

热门文章

  1. 【智能安防系统与区块链的结合】利用区块链提高安防系统的安全性和透明度
  2. 获取psd素材切图快捷键
  3. 【Python】绘图和可视化
  4. Scala 自身类型(self-type) 解析
  5. Cassandra有何特点?
  6. 如何进行前端自动化测试?
  7. 2-GMM-HMMs语音识别系统-训练篇
  8. oracle星型查询,优化星型查询
  9. 鹏哥C语言——扫雷2021-08-16
  10. 国家高新技术企业门户与移动全生态开发套件-Zooma!逐浪CMS v8.1.4正式发布