文件与文件夹操作

文件和文件夹的操作

open函数

文件操作模式

# "r"(read):以只读模式打开文件。你只能读取文件的内容,不能修改或写入文件。如果文件不存在,会引发错误。
# 文件的指针会放在文件的开头 
file = open("example.txt", "r")

# r+ 用于文件的读写,文件的指针放在开头
file = open("example.txt", "r+")

# "w"(write):以写入模式打开文件。如果文件存在,它会被截断(清空),然后重新写入内容。如果文件不存在,将会创建一个新文件。
file = open("example.txt", "w")

# w+ 打开一个文件用于读写,指针放在开头 ,存在的话,写入的字符会覆盖源文件,不存在则会创建文件


# "a"(append):以追加模式打开文件。如果文件存在,你可以在文件末尾追加内容。如果文件不存在,将会创建一个新文件。
file = open("example.txt", "a")

# a+ 用于读写,存在则打开,不存在则创建,指针放在结尾


# "x"(exclusive creation):以独占创建模式打开文件。如果文件已存在,会引发错误。如果文件不存在,将会创建一个新文件。
file = open("example.txt", "x")

# "b"(binary):与上述模式结合使用,表示以二进制模式打开文件,用于处理二进制文件(如图片、音频等)。例如,"rb"表示以只读的二进制模式打开文件。
file = open("example.bin", "rb")


# "t"(text):与上述模式结合使用,表示以文本模式打开文件,用于处理文本文件(默认)。例如,"rt"表示以只读的文本模式打开文件,这是默认的模式。
file = open("example.txt", "rt")

# 这些模式可以组合使用,例如:"rb" 表示以只读的二进制模式打开文件。在打开文件后,你可以使用不同的方法(如read()、write()等)来执行相应的文件操作。不要忘记在完成文件操作后关闭文件,以释放系统资源:
file.close()

格式:open(file_name(文件路径), mode(读写模式), encoding=‘编码格式’)

路径:相对\绝对

file = open('python.txt', 'r')
print(file) # <_io.TextIOWrapper name='python.txt' mode='r' encoding='UTF-8'>  在windows中默认读写格式是gbk
print(type(file))  # <class '_io.TextIOWrapper'>
# 将读取出来的内容进行打印
print(file.read())
# 关闭文件
file.close()

在调用文件的 时候,只要打开了不关闭,就会一直浪费内存,不利于服务器的优化 (内存泄漏)

在文件关闭 后,文件并没有被变量释放,虽然文件的 链接关闭了,但是文件的所有数据都被变量接收了

能读,但是无法操作

read

格式:file.read(接受的字符数量)

当指定的数字不指定或者是负数的时候,文件将被读取至末尾

在读取文件时,每一次读取都会持续向后读取,知道文件关闭,所以可以用 循环持续读取


while True:
    content = file.read(3)
    if content == '':
        break
    print(content)

readline

格式:file.readline()不传入数据,每次读取一行(以 \n结尾的)

while True:
    content = file.readline()
    if content == '':
        break
    print(content,end='')

readlines

格式:f1=f.readlines()

读取剩余或者所有的行,当作一个字符串列表返回

f=open('song.txt','r')
f1=f.readlines()
print(f1)

文件的指针偏移操作

f.tell()获取当前指针在文件之中的位置

开头

seek(0,0) 或者 seek(0)

当前

 seek(x,1)  # 表示从当前,向后移动,如果x为负数,则向前移动

结尾

seek(x,2) # 表示从文件末尾,向后移动,如果x为负数,则是向前移动

文件的写入

文件的写入模式如果不是追加的话,每次打开,就会清空 文件的内容

write

格式:file.write(‘’)

file.write('我爱北京天安门,天安门上太阳升')

writelines

格式:file.writelines(‘列表’)

写入容器类型中的文件,里面的格式会被保存

lines = ['吴丝蜀桐张高秋\n', '空山凝云颓不流\n', '举头望明月\n', '低头思故乡\n']
file.writelines(lines)

案例:

文件备份案例:


# 1.获取用户键入的文件名
file_name = input('请输入您要备份的文件名称:')
file = open(file_name, 'r', encoding='utf-8')
# 2.要通过文件读写操作进行备份
# 2.1.拼接备份后的文件的文件名
copy_file_name = file_name.replace('.', '[备份].')
# 打开新文件
# 如果不是多次打开关闭文件,在一次打开过程中,多次写入,可以持续写入
# 但是如果下次打开该文件会将文件清空
copy_file = open(copy_file_name, 'w')
# copy_file = open(copy_file_name, 'a')
# # 读取旧文件数据
# content = file.read()
# # 写入新文件
# copy_file.write(content)
# 一般情况下,文件都是指定单次读取的最大字符的
# 循环进行读取并写入,直到所有字符读取完成

当执行 copy_file_name = file_name.replace('.', '[备份].') 这行代码时,它的作用是将字符串 file_name 中的所有点号(".")替换成字符串 "[备份].",然后将结果赋值给变量 copy_file_name。这通常用于创建文件名的备份或重命名文件。

举个例子,假设 file_name 的值为 "document.txt",执行这行代码后,copy_file_name 的值将变成 "document[备份].txt"。它在文件名中将点号替换为 "[备份].",这可以用于文件的备份或重命名,以区分原始文件和备份文件。

文件的读取

打开文件后可以直接读取整个文件

但是不推荐直接读取整个文件,因为整个文件,会有大量数据,如果数据过多会导致内存使用梁快速增加

read

file = open('python.txt', 'r')
# 读取文件
# n:在read中传入数值,代表我们读取的最大字符数
# 如果开发中有一个文本文件,比如网络小说,4个G大小,一次性读取,用户依次读取这么大的文件,极度消耗性能,而且 等待时间过长
# 所以在开发中我们经常会给读取数据的值做一个限定,最大读取字符一般限定为(1024*1024)

# 那我们使用read只能依次读取3个字符,那省下的字符我们怎样读取呢?
# 文件每一次读取,都会持续向后读取,直到文件关闭或程序结束,所以可以使用循环进行读取
# 在所有的文件内容读取完成后,会持续返回空字符串("")
while True:
    content = file.read(3)
    if content == '':
        break
    print(content)

# 关闭文件
file.close()

readline

一行一行的读取

file = open('python.txt', 'r')
# 文件操作
# readline  使用这种方式读取文件,每次读取一行以\n为分隔符,并且在文件打开状态下,会持续向下读取,直到所有文件被读取完成后,会读取空字符串""
while True:
    content = file.readline()
    if content == '':
        break
    print(content, end='')

content = file.readlines()

print(content)
# 文件关闭
file.close()

readlines

读取所有的文件以\n为分隔符,将所有的行以字符串元素的方式保存到列表当中进行返回

使用方法与readline一样


重命名和删除

import os

# rename  重命名  >>>类似于linux命令中的mv
# 格式:os.rename(旧文件路径,新文件路径)
# 需求:将Python.txt重命名为 abc.txt
# rename可以对文件进行重命名
# rename中源文件路径必须存在
os.rename('bigdata.txt', 'abcd.txt')
# 文件可以通过rename进行移动,移动的位置根据新文件路径决定,移动后同样可以修改名称
os.rename('abcd.txt', '文件/abcd.txt')
# 文件移动时必须有文件名称,否则无法移动,移动后可以改名
os.rename('abc.txt', '文件/a.txt')


# remove  删除文件  >>> 类似于linux里的rm
# 可以删除文件,但是不会有任何提示,但是也不会出现在回收站中,误删后无法回复,删除需谨慎
os.remove('bigdata[备份].txt')
# 可以删除指定路径下的文件
# 如果被删除的路径不存在,则报错  (路径可以使用绝对路径,和相对路径)
os.remove('文件/a.txt')
os.remove('python[备份].txt')
# PermissionError: [Errno 1] Operation not permitted: '文件'
# 使用remove不能删除文件夹
os.remove('文件')

文件夹的操作

创建文件夹

os.mkdir(路径)

如果要创建的文件夹存在则会报错,不存在则创建,如果要创建的文件的上级目录不存在则无法创建文件

删除文件夹

os.rmdir(路径)

如果要删除的文件不存在,则会报错,如果文件非空则不能用rmdir删除,只能使用递归删除

.remove(‘python[备份].txt’)

PermissionError: [Errno 1] Operation not permitted: ‘文件’

使用remove不能删除文件夹

os.remove(‘文件’)




# 文件夹的操作

## 创建文件夹

> os.mkdir(路径)

如果要创建的文件夹存在则会报错,不存在则创建,如果要创建的文件的上级目录不存在则无法创建文件



## 删除文件夹

> os.rmdir(路径) 

如果要删除的文件不存在,则会报错,如果文件非空则不能用rmdir删除,只能使用递归删除

如果文件夹非空是不能使用该代码删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值