Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
目录* 1、需求
- 2、步骤
- 3、代码实现
- (1)接收用户输入目标文件名
- (2)规划备份文件名
- (3)备份文件写入数据
- (4)思考
- (5)完整编码
- 4、再来一个小练习
1、需求
用户输入当前目录下任意文件名,程序完成对该文件的备份功能。
备份文件名为xx[备份]后缀
,例如:test[备份].txt
。
2、步骤
- 接收用户输入的文件名。
- 规划备份文件名。
- 备份文件写入数据。
3、代码实现
(1)接收用户输入目标文件名
python
old\_name = input('请输入您要备份的文件名:')
(2)规划备份文件名
2.1 提取目标文件后缀。
2.2 组织备份的文件名,xx[备份]后缀。
python
# 2.1 提取文件后缀点的下标
index = old\_name.rfind('.')
# 2.2 组织新文件名 旧文件名 + [备份] + 后缀
new\_name = old\_name[:index] + '[备份]' + old\_name[index:]
(3)备份文件写入数据
3.1 打开源文件 和 备份文件。
3.2 将源文件数据写入备份文件。
3.3 关闭文件。
python
# 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()
(4)思考
如果用户输入.txt
,这是一个无效文件,程序如何更改才能限制只有有效的文件名才能备份?
答:添加条件判断即可。
python
# 有文件名,才能提取后缀
# 这里无法取得后缀,拼接的时候没有后缀的变量
# 就会报错
if index > 0:
postfix = old\_name[index:]
(5)完整编码
1)传统实现
python
# 1. 用户输入目标文件 如:sound.txt.mp3
old\_name = input('请输入您要备份的文件名:')
# 2. 规划备份文件的名字
# 2.1 提取后缀 --
# 找到名字中的最右侧的点才是后缀的点
# 在右侧查找rfind()方法
# 获取文件全名中后缀.的位置
index = old\_name.rfind('.')
# 4. 思考:有效文件才备份 .txt
if index > 0:
# 提取后缀,这里提取不到,后面拼接新文件名字的时候就会报错
postfix = old\_name[index:]
# 2.2 组织新名字 = 原名字 + [备份] + 后缀
# 原名字就是字符串中的一部分子串 -- 切片[开始:结束:步长]
# new\_name = old\_name[:index] + '[备份]' + old\_name[index:]
new\_name = old\_name[:index] + '[备份]' + postfix
# 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()
2)实际工作实现
python
# 1. 用户输入目标文件 如:sound.txt.mp3
old\_name = input('请输入您要备份的文件名:')
# 获取文件全名中后缀.的位置
index = old\_name.rfind('.')
# 4.有效文件才备份 .txt
if index > 0:
postfix = old\_name[index:]
# 3.开始备份文件
# 打开原文件
with open(old\_name , 'rb') as file\_obj:
# 组织新名字 = 原名字 + [备份] + 后缀
new\_name = old\_name[:index] + '[备份]' + postfix
# 创建并打开新文件
with open(new\_name, 'wb') as new\_obj:
# 定义每次读取的大小
chunk = 1024 * 100
while True:
# 从已有的对象中读取数据
content = file\_obj.read(chunk)
# 内容读取完毕,终止循环
if not content:
break
# 将读取到的数据写入到新对象中
new\_obj.write(content)
两种方式实现的功能一样。
4、再来一个小练习
需求:二进制文件读取(实现方式和上边一样)
python
# 读取模式
# t 读取文本文件(默认值)
# b 读取二进制文件
file\_name = “hello.txt”
with open(file\_name , 'rb') as file\_obj:
# 读取文本文件时,size是以字符为单位的
# 读取二进制文件时,size是以字节为单位
# print(file\_obj.read(100))
# 将读取到的内容写出来
# 定义一个新的文件
new\_name = 'aa.txt'
with open(new\_name , 'wb') as new\_obj:
# 定义每次读取的大小
chunk = 1024 * 100
while True :
# 从已有的对象中读取数据
content = file\_obj.read(chunk)
# 内容读取完毕,终止循环
if not content :
break
# 将读取到的数据写入到新对象中
new\_obj.write(content)
-
__EOF__
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yMduLv18-1643408493151)(https://blog.csdn.net/liuyuelinfighting)]繁华似锦Fighting - 本文链接: https://blog.csdn.net/liuyuelinfighting/p/15853186.html
- 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
- 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角**【[推荐](javascript:void(0)😉】**一下。