Python 之 文件处理
文件操作:
文件路径:d:\文件名.txt
编码方式:utf-8、gbk
操作方式:只读、只写、追加、读写、写读...
只读:r 或 rb
#相对路径
f=open("文件名",mode="r",encoding="utf-8") #打开
content=f.read() #读
print(content)
f.close() #关闭
#绝对路径
f=open("f:\gaoya.txt",mode="r",encoding="gbk") #打开
content=f.read() #读
print(content)
f.close() #关闭
绝对路径注意点:
1)、以什么编码方式储存的文件,就以什么编码方式打开,以免报错。
2)、隐藏文件类型的扩展名不需要追加。
f = open('文件名',mode='rb',)
content = f.read()
print(content)
f.close()
rb注意:非文字类型或文件的上传下载。
只写 w 或wb
#对于w:没有此文件就会创建文件
f = open('log',mode='w',encoding='utf-8')
f.write('文件内容')
f.close() # 先将源文件的内容全部清除,再写。
f = open('log',mode='w',encoding='utf-8')
f.write('文件内容')
f.close()
注意:W:没有此文件就会创建,有则删除原文件内容,再添加新内容。
f = open('log',mode='wb') #已表明bytes类型,不用写编码类型
f.write('文件内容'.encode('utf-8'))
f.close()
追加: a 或ab
f = open('log',mode='a',encoding='utf-8')
f.write('文件内容')
f.close()
f = open('log',mode='ab')
f.write('文件内容'.encode('utf-8'))
f.close()
读写 r+ 或 r+b(比较常用)
f = open('log',mode='r+',encoding='utf-8')
print(f.read())
f.close()
f = open('log',mode='r+b')
print(f.read())
f.write('大猛,小孟'.encode('utf-8'))
f.close()
r+注意:读写正常,先读后追加
写读,从头开始,写多少占多少位
写读:w+
f = open('log',mode='w+',encoding='utf-8')
f.write('aaa') #先写
f.seek(0) #光标移到最前
print(f.read()) #后读
f.close()
注意:全部去除,再添加
追加 a+
f = open('log',mode='a+',encoding='utf-8')
f.write('文件内容')
f.seek(0)
print(f.read())
f.close()
功能详解
obj = open('log',mode='r+',encoding='utf-8')
content = f.read(3) # 读出来的都是字符 打印前三个字符
f.seek(3) # 是按照字节定光标的位置 三个字节一个字,从第二个字开始
f.tell() #告诉你光标的位置
print(f.tell())
content = f.read()
print(content)
f.tell() #知道光标位置
f.seek(count-9) #打印后三个字
f.readable() # 是否可读
line = f.readline() # 一行一行的读
line = f.readlines() # 每一行当成列表中的一个元素,添加到list中
f.truncate(4)
for line in f:
print(line)
f.close()
注意:必须一行一行读,截取读
最后加close
另一种写法:
with open('log',mode='r+',encoding='utf-8') as f,\
open('log',mode='w+',encoding='utf-8') as f1: #可打开多个文件
f.read()
print(f.read()) #不用写close
例题1:注册、登录
username = input('请输入你要注册的用户名:')
password = input('请输入你要注册的密码:')
with open('list_of_info',mode='w',encoding='utf-8') as f:
f.write('{}\n{}'.format(username,password))
print('恭喜您,注册成功')
lis = []
i = 0
while i < 3:
usn = input('请输入你的用户名:')
pwd = input('请输入你的密码:')
with open('list_of_info',mode='r+',encoding='utf-8') as f1:
for line in f1:
lis.append(line)
if usn == lis[0].strip() and pwd == lis[1].strip():
print('登录成功')
break
else:print('账号和密码错误')
i+=1
例题2:将文件中的星儿替换为阿娇
with open('小护士班主任',encoding='utf-8') as f,open('小护士班主任.bak','w',encoding='utf-8') as f2:
for line in f:
if '星儿' in line: #班主任:星儿
line = line.replace('星儿','阿娇')
#写文件
f2.write(line) #小护士:金老板 import os
os.remove('小护士班主任') #删除文件
os.rename('小护士班主任.bak','小护士班主任') #重命名文件
注意:替换原文件的内容,写一个与原文件内容相同的新文件,然后删除旧文件,将新文件重命名为原文件的 名字。
修改文件的步骤:读---写---删---重命名
概括:
文件处理
打开文件
open('路径','打开方式','指定编码方式')
打开方式 r w a r+ w+ a+ b
r+ 打开文件直接写 和读完再写
编码方式 —— utf-
操作文件
读
read 一次性读
readlines 一次性读
readline 一行一行读
不知道在哪儿结束
视频 图片 rb bytes 按照字节读
for循环 —— 最好!!!
写
write
光标 —— 文件指针
seek _ 指定光标移动到某个位置
tell _ 获取光标当前的位置
truncate _ 截取文件
关闭文件
close
编码/解码
#str --->byte encode 编码
s = '二哥'
b = s.encode('utf-8')
print(b)
#byte --->str decode 解码
s1 = b.decode('utf-8')
print(s1)
s = 'abf'
b = s.encode('utf-8')
print(b)
#byte --->str decode 解码
s1 = b.decode('gbk')
print(s1)
Python 之 文件处理的更多相关文章
- Python读写文件
Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...
- python计算文件的md5值
前言 最近要开发一个基于python的合并文件夹/目录的程序,本来的想法是基于修改时间的比较,即判断文件有没有改变,比较两个文件的修改时间即可.这个想法在windows的pc端下测试没有问题. 但是当 ...
- python操作文件案例二则
前言 python 对于文件及文件夹的操作. 涉及到 遍历文件夹下所有文件 ,文件的读写和操作 等等. 代码一 作用:查找文件夹下(包括子文件夹)下所有文件的名字,找出 名字中含有中文或者空格的文件 ...
- Python :open文件操作,配合read()使用!
python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...
- python学习 文件操作
一.python打开文件 #=====================python 文件打开方式 open()===================== # open(fileName,type) t ...
- Python之文件读写
本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input ...
- python 遍历文件夹 文件
python 遍历文件夹 文件 import os import os.path rootdir = "d:\data" # 指明被遍历的文件夹 for parent,dirn ...
- python检测文件的MD5值
python检测文件的MD5值MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版权 ...
- Python编码/文件读取/多线程
Python编码/文件读取/多线程 个人笔记~~记录才有成长 编码/文件读取/多线程 编码 常用的一般是gbk.utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字 ...
- python 读写文件和设置文件的字符编码
一. python打开文件代码如下: f = open("d:\test.txt", "w") 说明:第一个参数是文件名称,包括路径:第二个参数是打开的模式mo ...
随机推荐
- HTML标签01
html标签:table 表格 (里面加的属性指整个表格的)tr 行td 单元格 (可以换成th,只有在单元格里面才能输入文字)th 表头 默认让文字居中 文字还会显示加粗状态 font 文字标签 属 ...
- js 预解析
前言 JavaScript是解释型语言是毋庸置疑的,但它是不是仅在运行时自上往下一句一句地解析的呢? 事实上或某种现象证明并不是这样的,通过<JavaScript权威指南>及网上相关资料了 ...
- win10开始键点击无效果
1.在键盘上按下win+R键,或在开始菜单图标上点击右键选择运行: 2.输入powershell,按下“确定”运行:3.在窗口里输入或复制粘贴以下命令,注意只有一行: Get-AppxPackage ...
- 程序4-2 access函数实例
//http://blog.chinaunix.net/uid-24549279-id-71355.html /* ========================================== ...
- (转)WebApi发送HTML表单数据:文件上传与多部分MIME
5.3 Sending HTML Form Data5.3 发送HTML表单数据(2) 本文引自:http://www.cnblogs.com/r01cn/archive/2012/12/20/282 ...
- Linux系统层面标配
1.MySQL中出现存SWAP,主要会是哪些原因?--物理内存切实不足--numa导致内存分配不均,出现物理内存未使用完,就出现大量swap的使用 2.MySQ中CPU负载很高,是什么原因?给出查找的 ...
- andriod/ios webview与js交互 html_demo
<html> <head> <title>测试</title> </head> <body> <h3>Android ...
- Bash读取/etc/passwd的特殊技巧
在twitter上看到的,记录一下: 可以bypass基于正则的规则,这里还可以引申出其他的bypass方法,
- 第七章 AOP(待续)
···············
- 1.1.Task Queue
任务队列是一种跨线程.跨机器工作的一种机制. 任务队列中包含称作任务的工作单元.有专门的工作进程持续不断的监视任务队列,并从中获得新的任务并处理. celery通过消息进行通信,通常使用一 ...