文件的复制和粘贴我们每个人都会,但是若是只使用代码进行完成可能就会有点难度了,今天我们就使用python语言中的多线程实现文件的copy
思路
利用python中文件操作中的open方法通过输入的路径找到文件,再将文件中的数据利用二进制进行赋值给一个新的变量,再次利用open方法中的w模式来创建新的文件再将变量中的数据赋值给新的文件,这样就实现了文件的copy
代码
import threading # 声明模块
import time
import os
f = "" # 定义一个变量用来接收数据
def read_thread(file_name, file_home): # 定义一个函数用来读取文件中的二进制数据
read_file = open(file_home + '//' + file_name, "rb") # open的打开模式为"rb"以二进制方式打开
global f
f = read_file.read()
read_file.close() # 关闭通道
def copy_thread(file_name, copy_home): # 定义一个函数用来创建新的文件并复制数据
my_list = list(os.listdir(copy_home)) # 查看复制路径是否存在当前文件
i = 1
while True:
if file_name in my_list:
copy_file = open(copy_home + '//' + file_name + f"(副本{i})", "wb")
copy_file.write(f)
copy_file.close()
i += 1
break
else:
copy_file = open(copy_home + '//' + file_name, "wb")
copy_file.write(f)
copy_file.close()
break
if __name__ == '__main__':
file_home = input("请输入想要copy文件的路径:")
file_name = input("请输入想要copy文件的名称:")
copy_home = input("请输入文件copy后的位置:")
if not os.path.exists(copy_home): # 若复制文件的目录不存在则创建路径
os.makedirs(copy_home)
read_threading = threading.Thread(target=read_thread, args=(file_name, file_home)) # 创建线程
copy_threading = threading.Thread(target=copy_thread, args=(file_name, copy_home))
read_threading.start() # 开启线程
time.sleep(0.5) # 等待复制成功!
print("正在复制请稍候!")
copy_threading.start()
time.sleep(0.5)
print("复制成功!")