2013-07-03 83 views
0

我需要創建一個腳本來從多個文件夾複製所有文件.class和.xml,並生成一個類似於tar類型的包,這些不同的路徑文件夾將在腳本運行時填充,這是否可能?創建一個包文件python

我使用的Linux - Centos的

感謝

+0

您正在使用哪個版本的Python 3.x?如果你被困在3.1中,'tarfile'的更強大的功能有點不同。 – abarnert

回答

0

Python的標準庫自帶multiple archiving modules,而更多的是從PyPI中和其他地方。

我不確定你想如何填寫要包含的東西的路徑,但假設你已經完成了這個部分,並且你有一個列表或迭代器,其中包含(適當的相對)路徑名文件。然後,你可以這樣做:

with tarfile.TarFile('package.tgz', 'w:gz') as tar: 
    for pathname in pathnames: 
     tar.add(pathname) 

但是,你甚至不必逐一收集所有的文件,因爲tarfile可以爲你做的。比方說,你的腳本只是需要一個或多個目錄名作爲命令行參數,你希望它遞歸添加的所有後綴名爲.xml.class在任何這些目錄中的任意位置的文件:

def package_filter(info): 
    if info.isdir() or os.path.splitext(info.name)[-1] in ('.xml', '.class'): 
     return info 
    else: 
     return None 

with tarfile.TarFile('package.tgz', 'w:gz', filter=package_filter) as tar: 
    for pathname in sys.argv[1:]: 
     tar.add(pathname) 

有關更多信息,請參閱examples。但主要是閱讀TarFile的構造函數和open方法的文檔。