利用python多线程实现拷贝文件夹的文件

import multiprocessing

import threading

import os

import time

import random

import sys

def copy_file(queue,file_name,source_folder_name,dest_folder_name):

#print(‘正在复制:%s‘ % file_name)

if os.path.isdir(source_folder_name + ‘/‘ + file_name):

queue.put(file_name)

return

if not os.path.exists(dest_folder_name):

os.mkdir(dest_folder_name)

data_file = open(source_folder_name + ‘/‘ + file_name,‘rb‘)

cp_file = open(dest_folder_name + ‘/‘ + file_name,‘wb‘)

while True:

content = data_file.read(4096)

if len(content) == 0:

break

cp_file.write(content)

data_file.close()

cp_file.close()

#print(‘%s文件复制完成!‘ % file_name)

queue.put(file_name)

def main():

source_folder_name = input("请输入文件夹:")

dest_folder_name = source_folder_name +"附件"

file_names = os.listdir(source_folder_name)

#创建一个队里

queue = multiprocessing.Manager().Queue(128)

#创建进程池

p = multiprocessing.Pool(1)

for file_name in file_names:

#print(‘put file_name %s‘ % file_name)

p.apply_async(copy_file,args=(queue,file_name,source_folder_name,dest_folder_name))

p.close()

#p.join()

all_file_nums = len(file_names)

while True:

file_name = queue.get()

if file_name in file_names:

file_names.remove(file_name)

copy_rate = (all_file_nums - len(file_names)) *100 /all_file_nums

print("\r%.2f=========>(%s) (%0.2f/%0.2f)" % (copy_rate, file_name,len(file_names),all_file_nums) + " " * 50,end="")

#\r 默认表示将输出的内容返回到第一个指针,这样的话,后面的内容会覆盖前面的内容

#sys.stdout.flush()

#if len(file_names) < 5:

#    print("remaining: %s" % file_names)

if copy_rate >= 100:

break

print(‘拷贝文件完成!‘)

if __name__ == "__main__":

main()

时间: 2024-08-27 00:07:10

利用python多线程实现拷贝文件夹的文件的相关文章

python 实现彻底删除文件夹和文件夹下的文件

python 中有很多内置库可以帮忙用来删除文件夹和文件,当面对要删除多个非空文件夹,并且目录层次大于3层以上时,仅使用一种内置方法是无法达到彻底删除文件夹和文件的效果的,比较low的方式是多次调用直到删除.但是,我们可以结合多个内置库函数,达到一次删除非空文件夹,不管其目录层次有多深. import os import shutil import traceback import globalvar def misc_init() # clean the test result folder

Python学习(九)IO 编程 —— 文件夹及文件操作

Python 文件夹及文件操作 我们经常会与文件和目录打交道,对于这些操作,python可以使用 os 及 shutill 模块,其中包含了很多操作文件和目录的函数.这边,仅介绍通常会用到的方法. os 可以操作简单的文件夹及文件操作,引入用  import os,可用  help(os)  或是  dir(os)  查看其用法.注意有些函数在os模块中,有的是在os.path模块中. shutil 模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作.须

Python 文件夹及文件操作

我们经常会与文件和目录打交道,对于这些操作,python可以使用 os 及 shutill 模块,其中包含了很多操作文件和目录的函数. os 可以执行简单的文件夹及文件操作,引入用  import os,可用  help(os)  或是  dir(os)  查看其用法.注意有些函数在os模块中,有的是在os.path模块中. shutil 模块提供了大量的文件的高级操作,特别针对文件拷贝和删除.主要功能为目录和文件操作以及压缩操作.须引入 import shutil  ,具体 help.本文仅介

使用IO流实现对特殊文件及文件夹中文件拷贝到指定文件中

本程序可以实现将自己指定的文件类型的文件拷贝到自己想放的文件中,比如一个文件夹中有很多文件,那么我们想把所有的TXT文件拷贝到自己指定的文件中.(靠背笔记) package com.blueZhang; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept

python文件夹遍历,文件操作,获取文件修改创建时间

在Python中,文件操作主要来自os模块,主要方法如下: os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回当前目录('.')os.chdir(dirname):改变工作目录到dirname os.path.isdir(name):判断name是不是一个目录,name不是目录就返回falseos.path.isfile(name):判断name是不是一个文件,不存在name也返回falseos.path.ex

Python - 创建目录,切换目录,创建文件,复制文件,移动文件 ,删除文件夹及文件

# -*- coding: utf-8 -*- """ Created on Mon Jan  9 00:35:43 2017 @author-Weixin: 953558077 """ import os import shutil import time ''' shutil模块的基础功能简介 copyfile( src, dst)      从源src复制到dst中去.当然前提是目标地址是具备可写权限.抛出的异常信息为IOException

C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件

C#追加文件 StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt"); sw.WriteLine("追逐理想"); sw.WriteLine("kzlll"); sw.WriteLine(".NET笔记"); sw.Flush(); sw.Close();C#拷贝文件 string OrignFile,NewFile; Or

python遍历文件夹中所有文件夹和文件,os.walk

python中可以用os.walk来遍历某个文件夹中所有文件夹和文件. 例1: import os filePath = 'C:/Users/admin/Desktop/img' for dirpath, dirnames, filenames in os.walk(filePath): print(dirpath, dirnames, filenames) 输出结果: 例2: import os filePath = 'C:\\Users\\admin\\Desktop\\img' for d

Python文件夹与文件的操作 ZZ

最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模块, 导入的方法是: import os 一.取得当前目录 s = os.getcwd() # s 中保存的是当前目录(即文件夹) 比如运行abc.py,那么输入该命令就会返回abc所在的文件夹位置. 举个简单例子,我们将abc.py放入A文件夹.并且希望不管将A文件夹放在硬盘的哪个位置,都可以在A