2014-06-20 85 views
0

我想在調用shutil.copytree時使用我自己的copy2函數。我將在dst上使用正則表達式來創建新的dst(複製和重命名)。我看到copy2的函數標頭爲shutil.copy2(src, dst, *, follow_symlinks=True)。 如果我要創建以下文件:在事件發生之前shutil copy2

def my_copy2(???): 
    return copy2(src, newdst...) 

應我的函數頭是什麼樣子,什麼會我叫copy2用?我不確定空*和符號鏈接參數會發生什麼情況,即我是否在意?

這工作,但不是相同的功能簽名COPY2:

#!/usr/bin/python 

import shutil 

def copy_and_rename(src,dst) : 
    return shutil.copy2(src, dst.replace("pdf","zzz")) 

SRC_DIR="srcjunk" 
DEST_DIR="destjunk" 
shutil.copytree(SRC_DIR, DEST_DIR, copy_function=copy_and_rename) 

回答

0

可以導入模塊的功能裏面,或者你可以做到這一點的腳本。 documentation沒有解釋什麼是*。我會省略它。

from shutil import copy2 
def my_copy2(src, newdst, ...) 
    return copy2(src, newdst, ...) 

,或是一個內部的進口(也是你可以只是做import shutil,然後用shutil.copy2導入):

def my_copy2(src, newdst, ...) 
    from shutil import copy2 
    return copy2(src, newdst, ...) 

你必須給你足夠的功能參數copy2能夠運行。 使用正則表達式的Abut意味着在使用字符串之前,您可以準備它,添加後綴或添加要存儲它的路徑。這可以在你的功能或外部完成。

+0

程序給def my_copy2(src,newdst)沒有錯誤。什麼是 」...」?什麼是空白星號意味着什麼?我收到無效的語法與「...」 – Paul

+0

...是您需要爲copy2或正則表達式治療的其他參數。關於星號我不知道意思... – Llopis

+0

我收到無效語法的「...」 – Paul

相關問題