文件处理,文件的三种打开模式,绝对路劲和相对路径,with管理网文件上下文,文件的高级应用,文件的修改,登陆注册。...
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管理网文件上下文,文件的高级应用,文件的修改,登陆注册。...相关推荐
- Python文件的三种打开模式
文件操作的基础模式有三种(默认的操作模式为r模式): r模式为read w模式为write a模式为append 文件读写内容的格式有两种(默认的读写内容的模式为b模式): t模式为text b模式为 ...
- Python对文件的三种打开方式以及with管理上下文
文件的三种打开方式以及with管理上下文 一.文件的三种打开方式 1.1 只读 f = open(r'D:\pycharm\python\123.txt','r',encoding='utf8') d ...
- linux文件编辑器的三种模式,Linux中文本编辑器三种工作模式切换及vi编辑器三种工作模式下命令详解...
文本编辑器的作用 创建或修改文本文件 维护Linux系统中的各种配置文件 Linux中最常用的文本编辑器 Linux中最常用的文本编辑器 vi:类UNIX操作系统的默认文本编辑器 vim:vim时vi ...
- python打开文件不存在-Python判断文件是否存在的三种方法
原标题:Python判断文件是否存在的三种方法 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件 ...
- win10计算机文件夹选项在哪里,w10文件夹选项在哪_win10打开文件夹选项的三种方法...
win10系统的文件夹选项在哪里?很多使用win1032位旗舰版系统的用户都会碰到需要对文件夹进行一些设置的情况,这时往往需要用到文件夹选项,可能有网友不知道文件夹选项在哪.没关系,下面小编就来为大家 ...
- C#利用WCF改进文件流传输的三种方式
摘要:本文介绍C#利用WCF改进文件流传输的三种方式:MTOM模型.基于同步传输的异步回调模型.基于异步传输的异步模型,并提供相应的实现代码供参考. - WCF在跨域传输使用了两种模型的方法调用:一种 ...
- 文件上传的三种方式-Java
前言:负责,因为该项目他(jetty嵌入式开始SpringMvc)实现文件上传的必要性,并拥有java文件上传这一块还没有被曝光.并 Http 更多晦涩协议.因此,这种渐进的方式来学习和实践上载文件的 ...
- (0095)iOS开发之本地文件预览的三种方法(3)
(0090)iOS开发之本地文件预览的三种方法(1) (0094)iOS开发之本地文件预览的三种方法(2) 用功能强大的Webview来实现文件预览功能 我导入的 ios.pdf 前两种可以打开,但是 ...
- java中三种方法_Java文件I/O的三种方法
Java文件I/O的三种方法 RandomAccessFile是不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和DataOutput接口之外(Data ...
最新文章
- quirks 模式是什么?它和 standards 模式有什么区别_什么是二级分销模式
- 【快乐水题】997. 找到小镇的法官
- OGNL中#和%的用法
- 【原】Python基础-函数
- Office 365也是.NET Core应用开发新战场
- 实现mvcc_MySQL 的多版本并发控制(MVCC) 是干啥的?
- Oracle 12C R2-新特性-PDB的磁盘I/O(IOPS,MBPS)资源管理
- EDUCoder编程练习题解(一维数组和二维数组)
- java 按钮垂直居中_WPF按钮中的文本内容未垂直居中
- Android实现App版本检测、下载与安装新版本apk
- 中国知网论文破解下载 (附:常用的网址)
- 稳压二极管和雪崩二极管的工作原理及选型学习总结
- netbeans php下载,Netbeans7下载和安装
- IOS点击事件延迟300ms踩坑
- java实现sug,Java SuggestionResult類代碼示例
- 【卡尔曼滤波】我所理解的卡尔曼滤波
- 一个新手的评价---人机交互方面(有些不搭题
- Python判断指定日期是不是法定节假日
- 【XSY2515】管道(pipe)(最小生成树+倍增lca)
- 【论文翻译笔记】Test Roll: Profit-Maximizing A/B Tests