python shutil 模塊 的剪切文件函數 shutil.movemove(src, dst),換用 os.rename(sourceFile, targetFile)


Google 一搜python 剪切文件,出來shutil 這模塊,網上很多人也跟瘋說shutil.move(src, dst)就是用來剪切文件的,結果一試,剪切毛線,文件都復制到另一個文件夾了,源文件還在,因為我的源文件正在被另一個程序使用,所以shutil.move(src, dst)把源文件復制到別的地方后沒法再對源文件進行刪除,這冒牌貨卻仍保留着復制后的文件。美其名曰移動文件。。。。網上也有人給出了shutil.move(src, dst)的源碼,先來看下它的源碼吧。。。

def move(src, dst):
    real_dst = dst
    if os.path.isdir(dst):
        real_dst = os.path.join(dst, _basename(src))
        if os.path.exists(real_dst):
            raise Error, "Destination path '%s' already exists" % real_dst
    try:
        os.rename(src, real_dst)
    except OSError:
        if os.path.isdir(src):
            if destinsrc(src, dst):
                raise Error, "Cannot move a directory '%s' into itself '%s'." % (src, dst)
            copytree(src, real_dst, symlinks=True)
            rmtree(src)
        else:
            copy2(src, real_dst)
            os.unlink(src)

很明顯,函數沒有對當前正在被別的程序使用的文件進行判斷,簡單的先復制再刪除,刪除不了的也就不管了。分析了此源碼的人到最后卻還在說此功能類似於windows的ctrl+x->ctrl+v操作。。你是傻嗎。。。

本來想自己寫個程序判斷的,但是懶得寫了,最后發現用os.rename(sourceFile, targetFile)可以完美解決。。。就用它了。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM