Python模糊基础点--文件操作
目录
- 文件的基本操作
- 文件操作三步走
- open函数打开文件
- write函数写入文件
- close函数关闭文件
- 入门级案例
- 解决写入中文乱码问题
- 文件的读取操作
- 聊聊文件操作的mode模式
- seek函数移动光标
- 文件备份应用
- 文件和文件夹操作
- os模块
- 与文件操作相关方法
- 与文件夹操作相关操作
- 文件夹删除补充(递归删除)
文件的基本操作
文件操作三步走
① 打开文件
② 读写文件
③ 关闭文件
open函数打开文件
在Python,使用open()
函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下:
f = open(name, mode)
注:返回的结果是一个file文件对象(后续会学习,只需要记住,后续方法都是f.方法())
name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
mode:设置打开文件的模式(访问模式):只读r、写入w、追加a等。
r模式:代表以只读模式打开一个已存在的文件,后续我们对这个文件只能进行读取操作。如果文件不存在,则直接报错。另外,r模式在打开文件时,会将光标放在文件的一行。
w模式:代表以只写模式打开一个文件,文件不存在,则自动创建该文件。w模式主要是针对文件写入而定义的模式。但是,要特别注意,w模式在写入时,光标也是置于第一行同时还会清空原有文件内容。
a模式:代表以追加模式打开一个文件,文件不存在,则自动创建该文件。a模式主要也是针对文件写入而定义模式。但是和w模式有所不同,a模式不会清空文件的原有内容,而是在文件的尾部追加内容。
write函数写入文件
基本语法:
f.write('要写入的内容,要求是一个字符串类型的数据')
close函数关闭文件
f.close()
入门级案例
# 1、打开文件
f = open('python.txt', 'w')
# 2、写入内容
f.write('人生苦短,我学Python!')
# 3、关闭文件
f.close()
强调一下:中文乱码问题,默认情况下,计算机常用编码
ASCII、GBK、UTF-8
解决写入中文乱码问题
# 1、打开文件
f = open('python.txt', 'w', encoding='utf-8')
# 2、写入内容
f.write('人生苦短,我学Python!')
# 3、关闭文件
f.close()
文件的读取操作
read(size)方法
:主要用于文本类型或者二进制文件(图片、音频、视频…)数据的读取
size表示要从文件中读取的数据的长度(单位是字节),如果没有传入size,那么就表示读取文件中所有的数据。
f.read() # 读取文件的所有内容
f.read(1024) # 读取1024个字节长度文件内容,字母或数字,一个占1个字节长度。中文utf-8占3个字节长度。
# 1、打开文件
f = open('python.txt', 'r', encoding='utf-8')
# 2、使用read()方法读取文件所有内容
contents = f.read()
print(contents)
# 3、关闭文件
f.close()
readlines()方法
:主要用于文本类型数据的读取
readlines
可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表
,其中每一行的数据为一个元素
。
# 1、打开文件
f = open('python.txt', 'r', encoding='utf-8')
# 2、读取文件
lines = f.readlines()
for line in lines:print(line, end='')
# 3、关闭文件
f.close()
聊聊文件操作的mode模式
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
虽然mode文件操作模式很多,但是我们只需要记住3个字符即可。r、w、a
r+、w+、a+,代加号,功能全,既能读,又能写(区别在于指针到底指向不同)
rb、wb、ab,代b的字符,代表以二进制的形式对其进行操作,适合读取文本或二进制格式文件,如图片、音频、视频等格式
rb+、wb+、ab+,代加号,功能全,既能读,又能写(区别在于指针到底指向不同)
seek函数移动光标
无论是文件读操作,还是写操作。其起始位置都是文件光标决定的。
r => 文件头
w => 清空文件内容,指向文件头
a => 文件尾
光标在刚打开文件时,默认情况下是根据r、w、a模式相关固定的。但是我们可以通过某些方法,人为移动光标。可以通过seek方法实现。
f.seek(offset,whence=0)offset:开始的偏移量,也就是代表需要移动偏移的字节数
whence:给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
实际工作中,seek主要用于重置光标到起始位置。
f.seek(0)
或
f.seek(0, 0)
其他应用:
>>> f = open('workfile', 'rb+')
>>> f.write(b'0123456789abcdef')
16
>>> f.seek(5) # 从0开始向右移动5个字节
5
>>> f.read(1)
b'5'
>>> f.seek(-3, 2) # 从右向左移动3个字节
13
>>> f.read(1)
b'd'
文件备份应用
只要在程序中有人为输入,强烈建议对用户输入的数据进行校检。
# 1、接收用户输入的文件名(要备份的文件名)
oldname = input('请输入要备份的文件名称:') # XXX.txt
# 2、规划备份文件名(XXX[备份].txt)
# 搜索点号
index = oldname.rfind('.')
# 对index进行判断,判断是否合理(index > 0)
if index > 0:# 返回文件名和文件后缀name = oldname[:index]postfix = oldname[index:]newname = name + '[备份]' + postfix# 3、对文件进行备份操作old_f = open(oldname, 'rb')new_f = open(newname, 'wb')# 读取源文件内容写入新文件while True:content = old_f.read(1024)if len(content) == 0:breaknew_f.write(content)# 4、关闭文件old_f.close()new_f.close()
else:print('请输入正确的文件名称,否则无法进行备份操作...')
文件和文件夹操作
os模块
在Python中文件和文件夹的操作要借助os模块里面的相关功能,具体步骤如下:
第一步:导入os模块
import os
第二步:调用os模块中的相关方法
os.函数名()
与文件操作相关方法
编号 | 函数 | 功能 |
---|---|---|
1 | os.rename(目标文件名称,新文件名称) | 对文件进行重命名操作 |
2 | os.remove(要删除文件名称) | 对文件进行删除操作 |
案例:把Python项目目录下的python.txt文件,更名为linux.txt,休眠20s,刷新后,查看效果,然后对这个文件进行删除操作。
# 第一步:导入os模块
import os
# 第三步:引入time模块
import time# 第二步:使用os.rename方法对python.txt进行重命名
os.rename('python.txt', 'linux.txt')# 第四步:休眠20s
time.sleep(20)# 第五步:删除文件(linux.txt)
os.remove('linux.txt')
与文件夹操作相关操作
前提:
import os
相关方法:
编号 | 函数 | 功能 |
---|---|---|
1 | os.mkdir(新文件夹名称) | 创建一个指定名称的文件夹 |
2 | os.getcwd() | current work directory,获取当前目录名称 |
3 | os.chdir(切换后目录名称) | change directory,切换目录 |
4 | os.listdir(目标目录) | 获取指定目录下的文件信息,返回列表 |
5 | os.rmdir(目标目录) | 用于删除一个指定名称的"空"文件夹 |
案例1:
# 导入os模块
import os# 1、使用mkdir方法创建一个images文件夹
# os.mkdir('images')
# os.mkdir('images/avatar')# 2、getcwd = get current work directory
print(os.getcwd())# 3、os.chdir,ch = change dir = directory切换目录
os.chdir('images/avatar')
print(os.getcwd())# 切换到上一级目录 => images
os.chdir('../../')
print(os.getcwd())# 4、使用os.listdir打印当前所在目录下的所有文件,返回列表
print(os.listdir())# 5、删除空目录
os.rmdir('images/avatar')
案例2:准备一个static文件夹以及file1.txt、file2.txt、file3.txt三个文件
① 在程序中,将当前目录切换到static文件夹
② 创建一个新images文件夹以及test文件夹
③ 获取目录下的所有文件
④ 移除test文件夹
# 导入os模块
import os# ① 在程序中,将当前目录切换到static文件夹
os.chdir('static')
# print(os.getcwd())# ② 创建一个新images文件夹以及test文件夹
# os.mkdir('images')
# os.mkdir('test')# ③ 获取目录下的所有文件
# print(os.listdir())
for file in os.listdir():print(file)# ④ 移除test文件夹
os.rmdir('test')
文件夹删除补充(递归删除)
# 导入shutil模块
import shutil# 递归删除非空目录
shutil.rmtree('要删除文件夹路径')
递归删除文件夹的原理:理论上,其在删除过程中,如果文件夹非空,则自动切换到文件夹的内部,然后把其内部的文件,一个一个删除,当所有文件删除完毕后,返回到上一级目录,删除文件夹本身。
Python模糊基础点--文件操作相关推荐
- python 对 yaml 文件操作
python 对 yaml 文件操作 #!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Introduce : p ...
- Python实现tab文件操作
Python实现tab文件操作 # -*- coding:gbk -*- import os class TABFILE: def __init__(self, filename, dest_ ...
- python怎么读取文件-python怎么读写文件操作
本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...
- python处理excel教程实例-python 读写excel文件操作示例【附源码下载】
本文实例讲述了python 读写excel文件操作.分享给大家供大家参考,具体如下: 对excel文件的操作,python有第三方的工具包支持,xlutils,在这个工具包中包含了xlrd,xlwt等 ...
- Python中的文件操作和异常
Python中的文件操作和异常 文章目录 Python中的文件操作和异常 一.文件 01. 文件的概念 1.1 文件的概念和作用 1.2 文件的存储方式 文本文件和二进制文件 02. 文件的基本操作 ...
- Python os模块文件操作(二)
Python os模块文件操作(二) os模块对文件夹和文件的操作很多.可以先看: https://blog.csdn.net/weixin_43790276/article/details/9867 ...
- Python os模块文件操作(一)
Python os模块文件操作(一) 一.文件描述符 在使用代码对文件进行操作时,为了指定操作的文件,避免不了要使用文件描述符,所以我们先介绍什么是文件描述符. 操作系统为了高效管理已经被打开的文件, ...
- python怎么读写文件-python怎么读写文件操作
本节内容:I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input/ ...
- python对PDF文件操作
python对PDF文件操作 下载模块PyPDF2,以页为基本单位对PDF文件进行读写操作,无法直接操作每一页内容. PDF文件读操作 导入函数 from PyPDF2 import PdfFileR ...
最新文章
- Python基础17-模块与包基础02、常用模块之time、random
- AI一分钟 | 贾跃亭这次真的没钱了,法拉第只够发到年底工资;自动驾驶风云:Uber竟被爆料收购窃取Waymo机密的公司
- 购买Entrust SSL 数字证书?你怎么看?
- 多个线程对hashmap进行put操作的异常
- gbk文件转为utf8文件
- Unity3D 游戏引擎之实现平面多点触摸(二)
- 滴滴顺风车春运暂不上线;锤子员工被强制离职;苹果聘请三星高管 | 极客头条...
- linux ls 输出格式,(转)linux 中使用ls指定输出时间格式
- 拓端tecdat|R语言用RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测
- C语言编程必背单词百度云,c语言编程必背单词-20210403022023.pdf-原创力文档
- mysql 占比函数_MySQL通过分组计算百分比
- 腾讯云重装和还原操作系统
- 电脑管家软件搬家没有历史记录
- python 计算开平方数
- mw320r虚拟服务器,水星MW320R路由器桥接设置教程-水星路由器设置
- springboot基于vue众筹平台系统
- linux系统怎么连接显示器,Linux下笔记本外接显示器 · Eulerlee
- Git关联多个远程仓库
- Mockplus Cloud自动生成规格,Mockplus Cloud交互式动画原型
- linux英伟达显卡内核不匹配,Linux 5.11 内核将添加对英伟达 RTX 30 系列显卡的支持...
热门文章
- vue2入门--->过滤器,内置指令,自定义指令
- 实现 防止视频被下载功能
- Texture(纹理贴图)和Material(材质)概念上的区别
- 大规模 C++ 编译性能优化系统 OMAX 介绍
- IE不能打开网页的原因及解决办法
- ImageSpan的使用
- 老师计算机组合照说说,适合教师发朋友圈的说说:年轻的老师,一直在学习的路上...
- Shape of passed values is (230999, 1), indices imply (230999, 3)
- 站长号词库:今日热门长尾关键词挖掘 20221129
- Oracle查询速度慢的原因总结