路径不要自己拼接, 容易出错:
import osimport time
from multiprocessing import Pool, Manager, cpu_count
def copy(file_name, old_folder, new_folder, queue):
print(os.path.join(old_folder, file_name))
fr = open(os.path.join(old_folder, file_name), "r")
fw = open(os.path.join(new_folder, file_name), "w")
fw.write(fr.read())
fr.close()
fw.close()
queue.put(file_name)
def main():
base_path = os.getcwd()
old_folder = os.path.join(base_path, input("please your should copy the folder name:\n"))
new_folder = os.path.join(base_path, old_folder + "复件")
files = os.listdir(old_folder)
os.system("rmdir /Q /S {}".format(new_folder))
os.mkdir(new_folder)
pool = Pool(cpu_count())
queue = Manager().Queue()
for filename in files:
pool.apply_async(copy, (filename, old_folder, new_folder, queue))
pool.close()
num = 0
while True:
time.sleep(1)
all_file = len(files)
if queue.empty():
break
queue.get()
num += 1
print("copy: {0:.2f}%".format(num / all_file * 100), end="\r")
pool.join()
if __name__ == "__main__":
main()