将c盘文件夹‘体育’拷贝到d盘,并命名为‘体育2’文件夹。若d盘中已有‘体育2’文件夹,则删除后再拷贝。
拷贝完成后,在‘自由泳.txt’文件中重写内容:‘欢迎学习自由泳!(当前速度最快的一种游泳姿势)’和’孙杨是中国男子游泳第一位也是目前唯一一位奥运冠军’
最后将‘体育2’文件夹解压至D盘。
# 将c盘文件夹‘体育’拷贝到d盘,并命名为‘体育2’文件夹。若d盘中已有‘体育2’文件夹,则删除后再拷贝。
# 拷贝完成后,在‘自由泳.txt’文件中重写内容:‘欢迎学习自由泳!(当前速度最快的一种游泳姿势)’和'孙杨是中国男子游泳第一位也是目前唯一一位奥运冠军'
# 最后将‘体育2’文件夹解压至D盘。
import traceback # 导入traceback模块,用于打印异常信息。
import os # 导入os模块,可直接对操作系统进行操作。
import shutil # 导入shutil模块,做文件和文件夹的拷贝、移动、删除等
import zipfile
filename = '体育2' # 需创建的文件夹名称。
def delete_file(name): # 删除name文件夹里的文件
os.chdir('d:\\'+name) # 将路径转到文件夹内
print('包含的文件和目录列表为:', os.listdir('d:\\'+name)) # listdir(path),返回path目录下的文件和目录列表。
path = os.getcwd() # os.getcwd()返回当前工作目录值:current work dir
print(path) # 打印查看目录值
list_files = os.walk(path) # 递归遍历所有文件和目录。
print(type(list_files)) # 查看类型。list_files是一个可迭代对象,只能用一次,用完一次就会为空。
print(list_files)
# print(list(list_files))
# 此处仅用于查看list_files的具体内容,因其为迭代对象,只能使用一次,故查看完毕后注释该语句,不至于影响后面代码的操作!
files_path = [] # 创建文件名的列表
dirs_path = [] # 创建目录的列表
for dirpath, dirnames, filenames in list_files: # 遍历list_files
for file in filenames: # 遍历添加所有的文件名
files_path.append(os.path.join(dirpath, file)) # os.path.join(,,)用路径分割符连接字符
for dp in dirnames: # 遍历添加所有的名
dirs_path.append(os.path.join(dirpath,dp))
print(files_path) # 打印查看具体内容
print(dirs_path)
for i in files_path: # 删除所有文件,再删除目录
if os.path.isfile(i): # isfile(path),判断path是否为文件
os.remove(i) # 删除文件
for i in reversed(dirs_path): # 由内而外的顺序删除所有目录
os.rmdir(i)
os.chdir('d:\\')
os.rmdir('d:\\'+name) # 最后删除'name'文件夹自身,这样d盘就不存在’name‘文件夹了。
# 情形1:d盘中’体育2‘文件夹不存在,直接创建。
if os.path.exists('d:\\'+filename) is False: # exists(path),判断指定路径的文件是否存在.不存在则创建
shutil.copytree(r'C:\Users\mac\PycharmProjects\pythonProject\myproject01\venv\第二章深入与提高\体育', 'd:\\'+filename)
# 不存在则拷贝文件至D盘
print('\'{}\'文件夹不存在,现已成功创建'.format(filename))
else:
print('\'{}\'文件夹存在'.format(filename))
os.chdir('d:') # chdir(path)把path设为当前工作目录。转到d盘目录。
try:
os.rmdir(filename) # 删除文件夹’体育2‘,前提是文件为空才能执行。 情形2:d盘中’体育2‘文件夹存在且为空,直接删除再创建。
print('\'{}\'文件夹为空,已删除'.format(filename)) # 成功删除才执行,否则直接执行except语句。
shutil.copytree(r'C:\Users\mac\PycharmProjects\pythonProject\myproject01\venv\第二章深入与提高\体育',
'd:\\'+filename) # 不存在则拷贝文件至D盘
print('\'{}\'文件夹,重新创建成功'.format(filename))
except BaseException as e:
print(e)
delete_file(filename) # 情形3:d盘中’体育2‘文件夹存在且不为空,删除所有的文件和目录后再创建。
print('\'{}\'文件夹已删除'.format(filename))
shutil.copytree(r'C:\Users\mac\PycharmProjects\pythonProject\myproject01\venv\第二章深入与提高\体育',
'd:\\'+filename) # 不存在则拷贝文件至D盘
print('\'{}\'文件夹重新创建成功'.format(filename))
# 指定文件中写入内容。
s = ['欢迎学习自由泳!(当前速度最快的一种游泳姿势)\n', '孙杨是中国男子游泳第一位也是目前唯一一位奥运冠军']
with open('d:\\体育2\\竞技体育\\游泳\\自由泳.txt', 'w') as f:
f.writelines(s)
# 创建压缩包。
shutil.make_archive('d:/{}'.format(filename.strip("'")), 'zip', 'd:/{}'.format(filename.strip("'")))
# 将‘体育2’文件夹解压至D盘,名称为‘体育2.zip’。
print('\'体育2.zip\'压缩包创建成功!')
C盘中的‘体育’文件夹及内容:
运行结果(情形1):
(情形2):
此处忽略
(情形3):