python练习案例03之通用拷贝工具

472 阅读2分钟

这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战

完整代码:

 src_path = input('请输入源文件路径:').strip()
 dst_name = input('请输入拷贝后文件名(无文件后缀默认txt):').strip()
 ​
 # 判断文件是否有后缀
 count = dst_name.count('.')
 if count <= 0:
     dst_name = dst_name + '.txt'
 ​
 # 提取出源文件所在目录
 path = src_path.split('\')[:-1]
 path='\'.join(path)
 ​
 # 用源文件所在目录去拼接一下目标文件名,就得到目标完整的路径
 dst_path = path + '\' + dst_name
 ​
 # 常规拷贝操作
 with open(src_path,mode='rt+',encoding='utf-8') as f1,\
     open(dst_path,mode='wt+',encoding='utf-8') as f2:
     res = f1.read()
     f2.write(res)

思路:

1.首先我们需要用户输入完整路径,输入源文件路径以及拷贝后文件名,这里我们就把复制文件放到源文件所在目录下,为了防止用户手抖敲空格,我们在把两边的空白符去掉

 src_path = input('请输入源文件路径:').strip()
 dst_name = input('请输入拷贝后文件名(无文件后缀默认txt):').strip()

2.接着我们要判断文件是否有后缀,暂不支持无后缀文件的拷贝,我们用“.”的数量判断是否有后缀,如果有,那肯定有“.”,如有没有我们添加默认后缀“.txt”

 # 判断文件是否有后缀
 count = dst_name.count('.')
 if count <= 0:
     dst_name = dst_name + '.txt'

3.然后我们需要从用户输入的源文件路径中提取所在目录,我们可以用列表切片的方式将源文件所在路径切出来和目标文件名拼接成完整的目标文件路径

 # 提取出源文件所在目录
 path = src_path.split('\')[:-1]
 path='\'.join(path)
 ​
 # 用源文件所在目录去拼接一下目标文件名,就得到目标完整的路径
 dst_path = path + '\' + dst_name

4.接着就是简单的文件操作了,用读的方式将源文件内容读出来然后用写的方式放到目标文件中

 # 常规拷贝操作
 with open(src_path,mode='rt+',encoding='utf-8') as f1,\
     open(dst_path,mode='wt+',encoding='utf-8') as f2:
     res = f1.read()
     f2.write(res)

通用copy工具

完整代码:

 ## 获取源文件路径和目标文件目录
 src_file = input('源文件路径>>>')
 dst_filename = input('目标文件名(不包括后缀名)>>>')
 dst_path = input('目标文件所在目录>>>')
 dst_file = dst_path + '\' + dst_filename
 ​
 ## 对源文件和目标文件进行后缀名处理
 suffix = '.' + src_file.split('.')[-1]
 dst_file = dst_file + suffix
 ​
 ## 对文件进行二进制的读写操作
 with open(src_file,mode='rb') as f1,\
     open(dst_file,mode='wb') as f2:
     for line in f1:
         f2.write(line)
 print('完成')

思路:

之前写的copy工具只适用于文本格式,但是这次这个可以用于二进制格式,就是大部分的常见格式,比如图片、音频、视频、文档

1.首先我们要先获取用户输入的源文件的路径以及修改后的文件名和文件所在目录,这里不需要输入后缀是因为我们后期会把源文件的后缀提取出来,保证copy前后的后缀名不变,然后再把copy后文件名和copy后文件所在路径拼接一下,成copy后文件路径
 ## 获取源文件路径和目标文件目录
 src_file = input('源文件路径>>>')
 dst_filename = input('目标文件名(不包括后缀名)>>>')
 dst_path = input('目标文件所在目录>>>')
 dst_file = dst_path + '\' + dst_filename
2.接着我们要对copy后的文件后缀名进行处理,我们先提取源文件后缀名,然后用“.”来切分成几块,无论是几块,后缀名一定是最后一块,然后再拼接到目标文件路径上,最终获得copy后的目标文件完整路径
 ## 对源文件和目标文件进行后缀名处理
 suffix = '.' + src_file.split('.')[-1]
 dst_file = dst_file + suffix
3.接着就是二进制形式的读写操作,这里采取读一行写一行,节约内存空间
 ## 对文件进行二进制的读写操作
 with open(src_file,mode='rb') as f1,\
     open(dst_file,mode='wb') as f2:
     for line in f1:
         f2.write(line)
 print('完成')

\