日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python3多进程写时拷贝_python多进程实现复制文件

發(fā)布時間:2024/7/23 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3多进程写时拷贝_python多进程实现复制文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

[Python] 純文本查看 復制代碼'''

多進程實現(xiàn)復制文件

步驟:

(1)獲得源文件夾路徑;

(2)獲取源文件夾下各文件的文件名

(3)獲得目標文件夾

(4)復制文件(文件夾不能復制)

新增內(nèi)容:

復制一個文件夾下的所有文件

知識點:

(1)os模塊:

1>listdir(path),得到路徑path下的所有文件夾名和文件名。(只有一層)

2>mkdir(path),新建該路徑的文件夾

3>path.isdir(path),該路徑是否為文。是,返回true

4>path.isfile(path), 該路徑是否為文件。 是,返回true。

(2)multiprocess 多進程

1>Pool() 進程池

2>Manger().Queue() 隊列(進程通信)

(3)遞歸實現(xiàn)復制子文件夾下的文件。

2019年10月23日

'''

import multiprocessing

import os

import time

#1得到復制的文件夾名

def get_old_folder_name():

old_folder_name = input("請輸入復制目錄:")

return old_folder_name

#2得到文件夾下的文件名

def get_file_names( folder ):

file_names = os.listdir(folder)

return file_names

#3新建文件夾

def creat_folder(new_folder_name):

try:

os.mkdir(new_folder_name)

except:

pass

return new_folder_name

#4復制文件到指定文件夾下

def copy_file(file_name, old_folder_name, new_folder_name,queue):

try:

#如果是文件,進行復制

if os.path.isfile( old_folder_name+"/"+file_name):

#不知道文件類型,直接使用二進制讀取。

old_f = open(old_folder_name+"/"+file_name, "rb")

read_str = old_f.read()

old_f.close()

new_f = open(new_folder_name +"/" + file_name, "wb")

new_f.write(read_str)

new_f.close()

#如果是文件夾,進行遞歸。 新建文件夾--》獲取子文件夾文件名--》復制文件

if os.path.isdir(old_folder_name+"/"+file_name):

new_folder_name = creat_folder(new_folder_name+"/"+file_name)

old_folder_name = old_folder_name +"/"+file_name

file_names = get_file_names(old_folder_name)

for file_name in file_names :

copy_file(file_name, old_folder_name, new_folder_name, queue)

except:

pass

#避免”復制“文件夾而產(chǎn)生的文件數(shù)量不夠,程序不能結束

queue.put(1)

#time.sleep(1)沒有實際作用,只是為了看進度條的效果

time.sleep(1)

#5主函數(shù)

def main(queue):

old_folder_name = get_old_folder_name()

print("原文件夾: ",old_folder_name)

file_names = get_file_names(old_folder_name)

print("文件數(shù)量: ",len(file_names))

new_folder_name = input("請輸入新的文件夾名:")

new_folder_name = creat_folder( new_folder_name)

print("新文件夾: ",new_folder_name)

for item in file_names :

pool.apply_async(copy_file, (item,old_folder_name,new_folder_name ,queue))

pool.close()

file_num = 0

file_sum = len(file_names)

while True:

if not queue.empty():

queue.get()

file_num+=1

print("\r",end="")

print("▓"*int(file_num/file_sum *50), end="")

print(" 已完成 %.2f%%" % (file_num/file_sum*100), end="")

if file_num == file_sum:

print()

break

print("復制完成!")

#5函數(shù)入口

if __name__ == "__main__":

pool = multiprocessing.Pool(10)

queue = multiprocessing.Manager().Queue()

main(queue)

總結

以上是生活随笔為你收集整理的python3多进程写时拷贝_python多进程实现复制文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。