让我提前感谢大家的帮助!仅供参考,我在 Windows 7-64 位中运行 Python 2.5(我知道已经过时,但我被迫使用这个版本)。
我有几个目录,每个目录都包含大量数据。我想减少将这些大目录从本地 HD 复制到网络驱动器所需的时间。为此,我有一个绝妙的想法,即使用单独的线程从 shutil 库中调用“移动”功能(请原谅,我不知道自己在做什么)。我遇到问题的地方是当一个线程试图移动一个目录时,它告诉我“[errno 13] Permission denied”。
这是我的问题的一般布局:
import shutil, threading
from Queue import Queue
def parentFunc():
fileQ = Queue() #initialize a work queue
lstDirsOld = ['C:\\LargeDirA','C:\\LargeDirB','C:\\LargeDirC','C:\\LargeDirD']
lstDirsNew = ['H:\\LargeDirA','H:\\LargeDirB','H:\\LargeDirC','H:\\LargeDirD']
for i in range(len(lstDirsOld)): #build the work queue
fileQ.put(lstDirsOld[i],lstDirsNew[i])
for i in range(len(lstDirsOld)): #attempt to copy files
worker = Thread(target=childFunc,args=(fileQ,))
worker.isDaemon = True
worker.start() #returns Errno 13
def childFunc(fileQ):
while True:
try:
src,dst = fileQ.get()
shutil.move(src,dst) #apparently this doesn't work in a thread
fileQ.task_done()
except Exception, e:
print(str(e))
我尝试将移动命令移动到 parentFunc 并且效果很好。不过,我不愿将此称为解决方案,因为复制目录将花费大量时间。
感觉就像答案正盯着我的脸。由于我是工程师而不是程序员,因此我很难看到自己的错误,因此非常感谢任何指导。