python文件操作的基础详细讲解(write、read、readlines、readline)
作者:ChenBinBini 发布时间:2021-04-05 19:31:44
标签:python,文件,操作
前言
python 文件操作、文件读写(write、read、readlines、readline)、文件的相关操作,简单易懂
1 文件操作
文件就是把一些数据存起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。
1.1 文件打开与关闭
1.1.1 打开文件
在python中,使用open函数,可以打开已经存在的文件,或者创建一个新文件,open(文件名,访问模式)
示例如下:
f = open(‘test.txt','w')
没有找到‘test.txt’文件,所以新建了‘test.txt’文件
1.1.2 关闭文件
close()
示例如下:
#新建一个文件,文件名为:test.txt
f = open(“text.txt”,”w”)
f.colse()#关闭这个文件
1.2 访问模式及说明
访问模式 | 说明 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写,如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果改文件不存在,创建新文件用于读写。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头 |
wb+ | 以二进制格式打开一个文件用于读写。如果改文件已存在则会覆盖。如果改文件不存在,创建新文件。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果改文件不存在,创建新文件用于读写。 |
2 文件读写
2.1 写数据(write)
使用write()可以完后向文件写入数据
示例如下:
#写
f = open("test.txt","w") #打开文件,w模式(写模式),文件不存在就新建
f.write("hello world,I am here!") #将字符串写入文件中
f.close() #关闭文件
写入的内容
2.2 读数据(read)
使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中的所有数据
示例如下:
#读:read方法,读取指定的字符,开始时定位在文件头部,每执行一次向后移动指定字符数
f = open("test.txt","r")
content = f.read(5) #一次读五个字符
print(content)
print('-'*30)
content = f.read()
print(content)
f.close()
运行结果下图:
2.3 读数据(readlines)
就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容进行一次性的读取,并且返回的是一个列表,其中每一行的数据为一个元素
示例如下:
f = open("test.txt","r")
content = f.readlines() # 一次性读取全部文件为列表,每行一个字符串
print(content) #['hello world,I am here!\n', 'hello world,I am here!\n', 'hello world,I am here!\n', 'hello world,I am here!\n',
i = 1
for temp in content:
print("%d:%s"%(i,temp))
i += 1
f.close()
运行结果下图:
2.3 读数据(readline)
readline一次读取一行
示例如下:
f = open("test.txt","r")
content = f.readline() #1:hello world,I am here!--1
print("1:%s"%content)
content = f.readline() #2:hello world,I am here!--2
print("2:%s"%content)
f.close()
运行结果下图:
3 文件的相关操作
有些时候,需要对文件进行重命名、删除一些操作,python的os模块中都有这些功能
3.1 文件重命名
os模块中的rename()可以完成对文件的重命名操作rename(需要修改的文件名,新的文件名)
import os
os.rename(“毕业论文.txt”,”毕业论文-最终版.txt”)
3.2 删除文件
os中的remove()可以完成对文件的删除操作
remove(待删除的文件名)
import os
os.remove(“毕业论文.txt”)
3.3 创建文件夹
import os
os.mkdir(“张三”)
3.4 获取当前目录
import os
os.getcwd()
3.5 改变默认目录
import os
os.chdir(“../”)
补充:文件综合操作实例
将文件夹下所有图片名称加上'_fc'
python代码:
# -*- coding:utf-8 -*-
import re
import os
import time
#str.split(string)分割字符串
#'连接符'.join(list) 将列表组成字符串
def change_name(path):
global i
if not os.path.isdir(path) and not os.path.isfile(path):
return False
if os.path.isfile(path):
file_path = os.path.split(path) #分割出目录与文件
lists = file_path[1].split('.') #分割出文件与文件扩展名
file_ext = lists[-1] #取出后缀名(列表切片操作)
img_ext = ['bmp','jpeg','gif','psd','png','jpg']
if file_ext in img_ext:
os.rename(path,file_path[0]+'/'+lists[0]+'_fc.'+file_ext)
i+=1 #注意这里的i是一个陷阱
#或者
#img_ext = 'bmp|jpeg|gif|psd|png|jpg'
#if file_ext in img_ext:
# print('ok---'+file_ext)
elif os.path.isdir(path):
for x in os.listdir(path):
change_name(os.path.join(path,x)) #os.path.join()在路径处理上很有用
img_dir = 'D:\\xx\\xx\\images'
img_dir = img_dir.replace('\\','/')
start = time.time()
i = 0
change_name(img_dir)
c = time.time() - start
print('程序运行耗时:%0.2f'%(c))
print('总共处理了 %s 张图片'%(i))
来源:https://blog.csdn.net/ChenBinBini/article/details/109520494
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 在任何有监督机器学习项目的模型构建阶段,我们训练模型的目的是从标记的示例中学习所有权重和偏差的最佳值。如果我们使用相同的标记示例来测试我们的
- 阅读上一篇:Freshow工具使用方法一. eval加密是在网马解密中最常见的,eval在jscript脚本中实际上是一个函数,简单可以理解
- 看到Django和layim实现websocketde资料很少,自己就琢磨了下,顺便搭建出来了。自己要去找闲心大神授权呀。先来看图这是初次搭
- 【译者的话】我们曾经在《透视色轮》一文中探讨过色轮的构成及作用,但你可能更多的只是将其作为了解颜色关系的一个工具,却不一定将其作为实际设计中
- php的命名空间功能已经出来很久了,但是一直以来没怎么深究过,这次赶着有时间所以特意翻着手册做一个整理和总结帮助自己完善完善,原本准备一篇写
- js 中判断某个元素是否存在于某个 js 数组中,相当于 php 语言中的 in_array 函数。Array.prototype.S=St
- 假设你想找到本书中的某一个句子。你可以一页一页地逐页搜索,但这会花很多时间。而通过使用本书的索引,你可以很快地找到你要搜索的主题。表的索引与
- alt的准确含义是,当照片不存在或者load错误时的提示。但同时img也同时支持alt和title,再有某些浏览器的错误解析,因此经常被误导
- Python读取配置文件-ConfigParser二次封装直接上上代码test.conf[database]connect = mysqls
- 阅读上一篇:[译]Javascript风格要素(一) 我们使用习惯用法可以使我们的意图更加的清晰和简洁。使用==时,当心强制转换考虑下面函数
- 为了画个图,被numpy这个模块的安装真的折腾疯了!!!一直装不上,花了几个小时,看了网上的很多教程、方法发现总结得不是很全,这里总结一下,
- 我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑、字幕编辑、分离音频、视频音频混流等。又比如对音频文件的操作:音频
- 本文实例讲述了python服务器与android客户端socket通信的方法。分享给大家供大家参考。具体实现方法如下:首先,服务器端使用py
- 将list拼接为一个字符串在 python 中如果想将 list 拼接为一个字符串,可使用 join() 方法。join() 方法描述将序列
- 现在Web页面的交互方式越来越多样化,其中拖放页面元素也是一种很常见的操作。在这类操作当中有两个主要问题需要解决,一个是事件的注册方式,一般
- Online人们搜索、浏览、阅读、跟帖、互动投票,玩游戏,甚至在线买卖交易。这些行为都是“用户体验”,听起来用户体验似乎无所不能,造成了互联
- 由于最近有个任务需要在python环境下跑,项目是python3.6 + tensorflow1.3.1.现总结安装环境:卸载Python3
- 在上一篇博客中,我们学习了python遗传算法包geatpy。并用它展示了一个不带约束的单目标规划问题,对往期内容感兴趣的同学可以参考👇:链
- 本文实例讲述了PHP实现的redis主从数据库状态检测功能。分享给大家供大家参考,具体如下:实例:<?php/** * 检测多个主从r
- python除法负数商的取整方式与C++不同python:5 / -2 = -3若想和C++行为相同,可以使用 int(operator.t