python---第六回之文件操作

目录

文件操作的作用

文件的基本操作

打开open()

打开文件模式

文件操作方法

 关闭文件

文件备份

 文件和文件夹的操作


 

 

文件操作的作用

就是把⼀些内容(数据)存储存放起来,可以让程序下⼀次执⾏的时候直接使 ⽤,⽽不必重新制作⼀份。

文件的基本操作

  • 打开⽂件open()
  • 读写等操作fread()、fwrite()
  • 关闭⽂件close()

打开open()

使⽤open函数,可以打开⼀个已经存在的⽂件,或者创建⼀个新⽂件

基本形式:open(name,mode)

  • name:是要打开的⽬标⽂件名的字符串(可以包含⽂件所在的具体路径)
  • mode:设置打开⽂件的模式(访问模式):只读、写⼊、追加等

打开文件模式

python打开文件模式和C语言的相同,在这里我就只展示常用的打开文件模式吧

  • r: 以只读⽅式打开⽂件。⽂件的指针将会放在⽂件的开头。这是默认模式,如果文件不存在则会报错
  • rb: 以⼆进制格式打开⼀个⽂件⽤于只读。⽂件指针将会放在⽂件的开头。这也是默认模式,如果文件不存在则会报错
  • w: 打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,则创建新⽂件
  • wb: 以⼆进制格式打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则打开⽂件,并从开头开始编 辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件
  • a: 打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说, 新的内容将会被写⼊到已有内容之后。如果该⽂件不存在,创建新⽂件进⾏写⼊
  • a+: 打开⼀个⽂件⽤于读写。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。⽂件打开时 会是追加模式。如果该⽂件不存在,创建新⽂件⽤于读写

例如

fopen('test.txt','w')

在这里: f 是 open 函数的⽂件对象,test.txt是文件名,w是指打开文件test.txt用于写入

文件操作方法

  1. 写:语法--文件对象.write('内容')
  2. 读:
  •         read()

文件对象.read(num)

num表示要从⽂件中读取的数据的⻓度(单位是字节),如果没有传⼊num,那么就表示读取⽂ 件中所有的数据

  •        readlines()

readlines可以按照⾏的⽅式把整个⽂件中的内容进⾏⼀次性读取,并且返回的是⼀个列表,其中每⼀⾏ 的数据为⼀个元素

  •         readline()

readline()⼀次读取⼀⾏内容

示例

文件test.txt内容

ef219b50703144d6845997c20bec789b.png

代码展示:

#1.read()
f = open('test.txt', 'r')

# 文件内容如果换行,底层有\n,会有字节占位,导致read书写参数读取出来的眼睛看到的个数和参数值不匹配
# read不写参数表示读取所有;
print(f.read(10))# 只读了十个字符(包括一个回车换行符)
f.close()


#2.readlines()
f = open('test.txt', 'r')
content=f.readlines()
print(content)# 输出全部信息,每行一个列表信息,输出为列表
f.close()

#3.readline()
f = open('test.txt', 'r')
con = f.readline()# readline():读一行输出一行信息
print(con)
con = f.readline()
print(con)
con = f.readline()
print(con)
# 共读取三行
f.close()

运行结果: 

46d5460636014c0f88a99b022ead9247.png

        3.seek()

作⽤:⽤来移动⽂件指针

语法--⽂件对象.seek(偏移量, 起始位置)

起始位置:

  • 0:⽂件开头
  • 1:当前位置
  • 2:⽂件结尾

注意:

  • r 改变文件指针位置:改变读取数据开始位置或把文件指针放结尾(无法读取数据)
  • a 改变文件指针位置,做到可以读取出来数据

 示例

文件依然是test.txt

代码展示

#1.r 改变指针文件位置

# 1.1 改变读取数据开始位置,把文件指针放开头,偏移量为2
f = open('test.txt', 'r+')
f.seek(2, 0)
con = f.read()
print(con)
f.close()


# 1.2 把文件指针放结尾(无法读取数据)
f = open('test.txt', 'r+')
f.seek(0, 2)# 没有偏移量,但是文件指针在结尾,没有数据输出
con = f.read()
print(con)
f.close()

# 2. a 改变文件指针位置,做到可以读取出来数据

# 2.1 把文件指针放开头
f = open('test.txt', 'a+')
f.seek(0, 0)
# f.seek(0)含义同上

con = f.read()
print(con)

f.close()
# 2.2 把文件指针放结尾
f = open('test.txt', 'a+')
f.seek(0, 2)# 没有偏移量,但是文件指针起始位置在结尾,所以无法读取数据

con = f.read()
print(con)

f.close()

运行结果:只有1.1和2.1有结果输出

16db8aab872043f8a1e335fce6f769d7.png

 关闭文件

语法:⽂件对象.close()

文件备份

需求:⽤户输⼊当前⽬录下任意⽂件名,程序完成对该⽂件的备份功能(备份⽂件名为xx[备份]后缀,例 如:test[备份].txt)

步骤:

  • 接收⽤户输⼊的⽂件名
  • 规划备份⽂件名
  • 备份⽂件写⼊数据

代码

# 1. 接收用户输入目标文件
old_name = input('请输入您要备份的文件名:')
# print(old_name)


# 2. 规划备份文件的名字,xx[备份]后缀

# 2.1 提取后缀 -- 找到名字中的点 -- 名字和后缀分离--最右侧的点才是后缀的点 -- 字符串查找某个子串rfind
# rfind:从右侧开始查找
index = old_name.rfind('.')# 查找点的下标

# 2.2 组织新名字 = 原名字 + [备份] + 后缀
# 原名字就是字符串中的一部分子串 -- 切片[开始:结束:步长]
# print(old_name[:index])
# print(old_name[index:])
new_name = old_name[:index] + '[备份]' + old_name[index:]
print(new_name)


# 3. 备份文件写入数据(数据和原文件一样)

# 3.1 打开 原文件 和 备份文件
old_f = open(old_name, 'rb')
new_f = open(new_name, 'wb')

# 3.2 原文件读取,备份文件写入
# 如果不确定目标文件大小使用循环读取写入,当读取出来的数据没有了则终止循环
while True:
    con = old_f.read(1024)
    if len(con) == 0:
        # 表示读取完成了
        break# 则终止循环

    new_f.write(con)

# 3.3 关闭文件
old_f.close()
new_f.close()

运行

4e6d04adfc574a79afcda9eb881ac391.png

原文件以及备份文件内容如下

ef219b50703144d6845997c20bec789b.png

 文件和文件夹的操作

python中⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能,具体步骤如下

1. 导⼊os模块:import os

2. 使⽤ os 模块相关功能:os.函数名()

  • 文件重命名rename:os.rename(⽬标⽂件名, 新⽂件名)
  • 删除文件remove:os.remove(⽬标⽂件名)
  • 创建文件夹mkdir:os.mkdir(⽂件夹名字)
  • 删除文件夹rmdir:os.rmdir(⽂件夹名字)
  • 获取当前目录getcwd:os.getcwd()
  • 改变默认目录chdir:os.chdir(⽬录)
  • 获取目录列表listdir:os.listdir(⽬录)

 

示例:

import os

# 1. rename(): 重命名
# os.rename('1.txt', '10.txt')


# 2. remove(): 删除文件
# os.remove('10.txt')


# 3. mkdir():创建文件夹
# os.mkdir('aa')


# 4.rmdir(): 删除文件夹
# os.rmdir('aa')


# 5. getcwd(): 返回当前文件所在目录路径
# print(os.getcwd())


# 6. chdir():改变目录路径
# 需求:在aa里面创建bb文件夹: 1. 切换目录到aa,2创建bb

# os.chdir('aa')
# os.mkdir('bb')


# 7. listdir(): 获取某个文件夹下所有文件,返回一个列表
# print(os.listdir())
# print(os.listdir('aa'))


# 8. rename() -- 重命名文件夹  bb重命名为bbbb
# os.rename('bb', 'bbbb')

本次总结的是文件操作相关的内容,内容简单,但总结不易,有不足之处欢迎指错。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值