python-笔记(三)文件操作
文件的操作一般分三步:
1、打开文件,获取文件的指针(句柄)
2、通过指针(句柄)操作文件
3、关闭文件
现在有以下文件:
我们为爱还在学
学沟通的语言
学着谅解
学着不流泪
等到我们学会飞
飞越黑夜和考验
日子就要从孤单里毕业
我们用多一点点的辛苦
来交换多一点点的幸福
就算幸福
还有一段路
等我们学会忍耐和付出
这爱情一定会有张证书
文件的基本操作:
f = open('file.txt','r') #以只读方式打开一个文件,获取文件句柄,如果是读的话,r可以不写,默认就是只读,
在python2中还有file方法可以打开文件,python3中file方法已经没有了,只有open
frist_line = f.readline()#获取文件的第一行内容,返回的是一个list
print(frist_line)#打印第一行
res = f.read()#读取所有文件内容
print(res)
f.close()#关闭文件 打开文件需要指定文件打开的路径,以及打开的方式,打开后就可以获取文件的句柄对文件进行操作
文件的打开模式:
#r模式,默认的模式,读文件内容,不能写,并且文件必须存在不存在就报错
#w写模式,不能读,没有就创建,会先清空文件内容然后重新写
#a追加模式,只能写,在文件的末尾添加内容
‘+’号表示可以同时读写文件
# r +,【可读、可写;可追加,如果打开的文件不存在的话,会报错】
# w +,【写读模式,使用w + 的话,已经存在的文件内容会被清空,可以读到已经写的文件内容】
# a +,【追加读写模式,不存在则创建;存在则只追加内容;】
#总结:只要是读模式文件必须存在,只要是w模式一定会你先清空文件
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
rU
r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件或者图片,linux可忽略,windows处理二进制文件时需标注)
rb
wb
ab
文件的操作方法:
f = open('file.txt','r+',encoding='utf-8')#encoding参数可以指定文件的编码
大文件时,读取文件高效的操作方法:
用上面的read()和readlines()方法操作文件的话,会先把文件所有内容读到内存中,这样的话,内存数据一多,非常卡,高效的操作,就是读一行操作一行,读过的内容就从内存中释放了
#文件对象也是可以迭代的
# count = 1
# for line in f:
# print('第%s行是%s'%(count,line)) 这样就是一行一行的读取文件
# count +=1
修改文件:
修改文件的话,有两种方式,一种是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容;
第二种是把修改后的文件内容写到一个新的文件中(推荐第二种)
(一)、第一种
f = open('b.txt','a+')#f代表的是这个文件的队形,也叫做句柄
# res = f.read()
# f.seek(0)
# f.truncate()
# new_res = res.replace('nnnn','nono')
# f.write(new_res) # f.close()
或者: with可以在使用完文件后自动关闭文件
# with open('b.txt','w+',encoding='utf-8') as f:
# f.seek(0)
# res = f.read()
# f.seek(0)
# f.truncate()
# new_res = res.replace('nnnn','tttt')
# f.write(new_res)
(二、)第二种
import os
# with open('b.txt','r+',encoding='utf-8') as fr , open('a.txt','w',encoding='utf-8') as fw:
# for line in fr:
# new_line = line.replace('nono','tttt')
# fw.write(new_line)
# os.remove('b.txt')
# os.rename('a.txt','b.txt')
e.g:修改文件
#修改文件
#python xxx.py hh.txt hehe haha 必须在命令行运行 import sys,os
#sys.argv #他就是用来获取在用python命令行运行python文件的时候,传入参数
#第一步判断用书输入的参数是不是够个数
inputs = sys.argv
if len(inputs) < 4:
print('参数不够至少需要三个参数,e.g:python xx.python xx.txt old_str new_str')
else:
file_name = inputs[1]
old_str = inputs[2]
new_str = inputs[3]
new_file_name = file_name +'.new'
# os.path.exists()#判断路径是否存在#
if os.path.exists(file_name):
with open(file_name,encoding='utf -8') as fr ,open(new_file_name,'w') as fw :
for line in fr:
res = line.replace(old_str,new_str)
fw.write(res)
os.remove(file_name)
os.rename(new_file_name,file_name)
else:
print('文件不存在')
python-笔记(三)文件操作的更多相关文章
- python学习笔记三 文件操作(基础篇)
文件操作 打开文件 open(name[,mode[,buffering]]) open函数使用一个文件名作为强制参数,然后返回一个文件对象.[python 3.5 把file()删除掉] w ...
- python学习笔记(三):文件操作和集合
对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 文件基本操作: f = open('file.txt','r') #以只读方式打开一个 ...
- python笔记3 - 文件操作
file 对象使用 open 函数来创建,下面说一下对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件,读取/写入文件内容 3.关闭文件. 注意: 文件打 ...
- python笔记:文件操作
1.逐行打印整个文件 # -*- coding: utf-8 -*- f = open("test",'r',encoding="utf-8") count = ...
- python 历险记(三)— python 的常用文件操作
目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...
- Python的高级文件操作(shutil模块)
Python的高级文件操作(shutil模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让我们用python的文件处理来进行文件拷贝,想必很多小伙伴的思路是:使用打开2个 ...
- Python入门篇-文件操作
Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...
- python基础篇(文件操作)
Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...
- python os&shutil 文件操作
python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...
- Liunx学习笔记(三) 文件权限
一.文件权限 1.查看文件权限 (1)文件权限 在 Linux 中对于文件有四种访问权限,列举如下: 可读取:r,Readable 可写入:w,Writable 可执行:x,Execute 无权限:- ...
随机推荐
- 似乎在梦中见过的样子 (KMP)
# 10047. 「一本通 2.2 练习 3」似乎在梦中见过的样子 [题目描述] 「Madoka,不要相信 QB!」伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Mo ...
- IDEA--错误:找不到或无法加载XXXXX--解决方法--创建javafx或其他项目出现的问题
今天一上午超厂长在学习javafx的时候,总是创建一个然后运行就会出现 出现错误:找不到或无法加载主类 找了二个小时,都说是jdk或者其他环境配置问题 按照那些改了也没用重新创建一个也提示出现错误:找 ...
- 使用ajax发送文件的三种方式及预览图片的方法,上传按钮美化
后端代码 def upload(request): if request.method == "GET": return render(request,'upload.html') ...
- windows和linux安装rabbitmq
一.windows安装rabbitmq 1.安装erlang 点击进入官网下载:http://erlang.org/download/ 2.安装rabbitmq 点击进入官网下载:http://www ...
- MFC- 网络编程
一.MFC网络编程 a)CAsyncSocket用于异步非阻塞类,用UDP通信: b)CAsyncSocket的子类(派生类):Csocket同步阻塞类,用于TCP通信: c)通信前,必须调用AfxS ...
- jQuery进阶第四天(2019 10.13)
1 初识面向对象(面向对象是一种思维方式) 以前写的代码 var name = '莉莉'; var sex = '女'; var age = 18; var name1 = '小明'; var sex ...
- python之路之——操作系统的发展历史
阅读目录 手工操作 —— 穿孔卡片 批处理 —— 磁带存储和批处理系统 多道程序系统 分时系统 实时系统 通用操作系统 操作系统的进一步发展 操作系统的作用 手工操作 —— 穿孔卡片 1946年第一台 ...
- MySQL中Innodb的聚簇索引和非聚簇索引
聚簇索引 数据库表的索引从数据存储方式上可以分为聚簇索引和非聚簇索引(又叫二级索引)两种.Innodb的聚簇索引在同一个B-Tree中保存了索引列和具体的数据,在聚簇索引中,实际的数据保存在叶子页中, ...
- 四、VLC搭建rtsp服务器
一.VLC搭建rtsp服务器 1.rtsp服务搭建 https://blz-videos.nosdn.127.net/1/OverWatch/AnimatedShots/Overwatch_Anima ...
- 基于tcp和udp协议的套接字
socket:是在应用层和传输层之间的一个抽象层,它把TCP/IP层的复杂的操作封装抽象,并提供一些接口供应用层调用 套接字:被设计用于同一台主机上多个应用程序之间的通信,被称为进程之间通信或IPC ...