python中如何使用多线程实现文件的copy

   日期:2020-08-09     浏览:78    评论:0    
核心提示:文件的复制和粘贴我们每个人都会,但是若是只使用代码进行完成可能就会有点难度了,今天我们就使用python语言中的多线程实现文件的copy思路利用python中文件操作中的open方法通过输入的路径找到文件,再将文件中的数据利用二进制进行赋值给一个新的变量,再次利用open方法中的w模式来创建新的文件再将变量中的数据赋值给新的文件,这样就实现了文件的copy代码import threading # 声明模块import timeimport osf = def read_thread

文件的复制和粘贴我们每个人都会,但是若是只使用代码进行完成可能就会有点难度了,今天我们就使用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("复制成功!")
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服