复制时Python线程I / O错误

时间:2013-01-10 20:00:58

标签: python file-io python-multithreading

我要提前感谢大家的帮助!仅供参考,我在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))

我尝试将move命令移动到parentFunc,它运行正常。不过,我对于将此称为解决方案犹豫不决,因为复制目录需要花费大量时间。

感觉答案就是盯着我的脸。由于我是工程师,而不是程序员,因此无法看到我的错误,所以非常感谢任何指导。

0 个答案:

没有答案