首页 / PYTHON / Python--文件操作
Python--文件操作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python--文件操作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7338字,纯文字阅读大概需要11分钟。
内容图文
![Python--文件操作](/upload/InfoBanner/zyjiaocheng/602/8a2095acbbfb485eba0599776db60423.jpg)
Python–文件操作
文件操作
文件操作包括:打开、关闭、读、写、复制
文件操作的作用:把一些内容(数据)存储起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力
文件的基本操作
文件操作步骤
1.打开文件
2.读写等操作
3.关闭文件
注意:可以只打开和关闭文件,不进行任何读写操作
打开
在Python中,使用open函数,可以打开一个已经存在的文件,或者创建一个文件,语法如下:
变量(文件对象) = open(name,mode)
name:是要打开的目标文件名的字符串(可以包含文件具体路径)
mode:设置打开文件的模式(访问模式):只读、写入、追加等
打开文件模式
**注意:**带b的都是二进制访问,带+的表示可读可写
文件指针相当于光标,文件指针的位置决定了文件的读、写的位置,文件指针后边是可读、可写的
type | info |
---|---|
r(常用) | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。(打开的文件不存在则报错) |
w(常用) | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a(常用) | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。(原文件如果有内容会被空覆盖,然后读取) |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。(原文件有内容,但是读取不到,因为读取的是文件指针之后的信息) |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
快速体验
f = open("test.txt","w") #文件打开
**注意:**此时的f为open的文件对象
写
语法
文件对象.write("内容")
举例
# 文件写入打开
f = open("2.txt","w") # w 不支持读
# 写入内容
f.write("hello")
# 关闭文件
f.close()
f1 = open("2.txt","r")
print(f1.read())
# 输出结果:
hello
注意:
- w和a模式:如果文件不存在,则创建文件,如果文件存在,w默认先清空再写入,a默认直接尾部追加
- r模式:如果文件不存在,则报错
读
w模式和a模式不支持读操作,w+默认和a+模式支持读操作
-
read()
文件内容如果换行,底层有个\n,会有字节的占位,导致read函数读取出来的信息个数,和我们看到的信息个数不一致
文件对象.read(num)
num表示要从文件中读取数据的长度(单位是字节),如果没有传入num,那么就表示文件中所有的数据,读到哪里,文件指针会放在哪里,再执行读的命令,会顺着向后读
f = open("1.txt","r")
print(f.read(10))
f.close() # 关闭文件
# 输出结果:输出10个字节
aaaaaa
bbb
f = open("2.txt","r")
print(f.read()) # 不加参数,输出文件全部信息
f.close()
# 输出结果:
aaaaaa
bbbbbb
cccccc
dddddd
-
tell()
获取当前读写的位置,在读写文件的过程中,如果想知道当前的位置,可以使用tell()来获取
f = open("a.txt","r") f.read(2) # 从开头读取了连个字节 a = f.tell() # 显示当前文件指针的位置 print(a) # 打印指针位置 f.close() # 执行结果:2
-
readlines()
readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素(换行符会一起打印)
f = open("2.txt","r")
con = f.readlines()
# 打印读取内容
print(con)
# 关闭文件
f.close()
# 输出结果:
['aaaaaa\n', 'bbbbbb\n', 'cccccc\n', 'dddddd']
-
readline()
readline()一次性读取一行内容,调用几次打印几行内容
f = open("2.txt") con = f.readline() # 读取第一行 print(con) # 读取第二行 con1 = f.readline() print(con1) f.close() # 输出结果: aaaaaa bbbbbb
-
seek()
作用:用来指定文件指针
语法如下:
文件对象.seek(偏移量,起始位置)
起始位置:
- 0:文件开头
- 1:当前位置
- 2:文件结尾
-
2.txt内容
aaaaaa
bbbbbb
cccccc
dddddd
f = open("2.txt","r+")
# 其实位置在开头,向后偏移两个位置
f.seek(2,0)
# 读取文件
con = f.read()
# 打印文件
print(con)
# 关闭文件
f.close()
# 输出结果:
aaaa #有两个跳过了
bbbbbb
cccccc
dddddd
f = open("2.txt","r+")
f.seek(0,2) # 2 表示文件指针在末尾,在末尾不需要偏移量,因此偏移量是0
com = f.read()
print(com)
f.close() # 打印不出内容
f = open("2.txt","a+") # a+默认支持读操作
f.seek(0) #当起始位置为0,偏移量为0时,偏移量可以省略
com = f.read()
print(com)
f.close()
# 输出结果:
aaaaaa
bbbbbb
cccccc
dddddd
关闭
文件对象.close()
文件备份
需求分析
需求:用户输入当前目录下的任意文件名,程序完成对该文件的备份功能(备份文件名为xx[备份]后缀,例如:test[备份].txt)
步骤
1.接受用户输入的文件名
2.规划备份文件名
3.备份文件写入数据
代码实现
1.接受用户输入目标文件名
old_name = input("请输入要备份的文件名:")
2.规划备份文件名
2.1 提取目标文件后缀
2.2 组织备份的文件名,xx[备份]后缀
# 1.用户输入目标文件名:hello.txt
old_name = input("请输入要备份的文件名:")
# print(old_name)
# print(type(old_name))
# 2.规划备份文件名
index = old_name.rfind(".") # 字符串分割
# print(index)
# print(old_name[:index])
# print(old_name[index:])
# 3.生成新的文件名
#判断用户输入的用户名是否有效
if index > 0:
postfix = old_name[index:]
new_name = old_name[:index] + "[备份]" + old_name[index:]
print(new_name) # hello[备份].txt
3.备份文件写入数据
3.1 打开原文件 和 备份文件
3.2 将原文件数据写入备份文件
3.3 关闭文件
# 打开旧文件
old_f = open(old_name,"rb")
# 打开新文件
new_f = open(new_name,"wb")
# 将旧文件的内容写入新文件
while True:
con = old_f.read(1024)
if len(con) == 0:
break
new_f.write(con)
# 关闭旧文件和新文件
old_f.close()
new_f.close()
文件和文件夹的操作
在Python中文件和文件夹的操作要借助os模块里的相关功能,具体步骤如下:
1.导入模块
import os
2.使用os模块相关功能
os.函数名()
文件相关操作
文件重命名
os.rename(目标文件名,新文件名)
举例
import os
os.rename("hello.txt","2.txt") # 文件重命名
删除文件
os.remove(目标文件名)
举例
import os
os.remove("11.txt") # 删除系统中的11.txt文件,文件如果不在本目录,需要书写路径
文件夹
创建文件夹
os.mkdir(文件夹名字)
举例
import os
os.mkdir("aa") # 创建文件夹aa
删除文件夹
os.rmdir(文件夹名字)
举例
import os
os.rmdir("aa") # 删除文件夹aa
获取当前目录
os.getcwd()
举例
import os
path = os.getcwd()
print(path)
# 输出结果:
C:\Users\yan'xiao'ran\python
文件夹重命名
os.rename(文件夹名字)
举例
import os
# 进入到aa目录
os.chdir("aa")
# 将目录bb改名为bbb
os.rename("bb","bbb")
切换目录
os.chdir(目录)
举例
import os
# 创建目录aa
os.mkdir("aa")
# 进入目录aa
os.chdir("aa")
# 在目录aa下创建目录bb
os.mkdir("bb")
os.chdir("./../aa") # 切换到上级目录下的aa目录下
获取目录列表
获取某个目录下的所有文件(目录和文件),返回一个列表
os.listdir(目录)
举例
import os
print(os.listdir())
# 输出结果:
['.idea', '2.txt', 'aa', 'hello.py', 'myfirstpython.py', 'test.txt', 'world.py']
print(os.listdir("aa"))
# 输出结果:
['bb']
创建多级目录
os.makedirs(多级目录)
举例
import os
os.makedirs("aa/bb/cc/dd") # 当前目录下创建aa/bb/cc/dd目录
删除多级目录
import shutil
shutil.rmtree(目录)
举例
import shutil
shutil.rmtree("aa") # aa是一个多级目录aa/bb/cc
应用案例
需求:批量修改文件名,即可添加指定字符串,又能删除指定字符串
import os
# 列出当前目录下的所有文件
list = os.listdir()
# 添加指定字符串
flag = 1
# print(list)
# 为当前目录下的文件改名(添加指定字符串)
for i in list:
if flag == 1:
# 生成新的文件名格式
new_name = "Python_" + i
# 为文件重命名
os.rename(i,new_name)
else:
# 判断字符Python_的长度
num = len("Python_")
# 将文件名中的Python_字符串切掉
new_name = i[num:]
# 为文件重命名
os.rename(i,new_name)
内容总结
以上是互联网集市为您收集整理的Python--文件操作全部内容,希望文章能够帮你解决Python--文件操作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。