2011-08-10 43 views
2

我與蟒蛇 我目前使用的代碼的zip文件模塊的實驗是這樣的:蟒蛇zip文件的目錄被複制過

z = zipfile.ZipFile("jar/algorithms.jar", "w") 
z.write('directory/QuickSort.class') 

的問題是,我的文件添加到罐子如下:

algorithms.jar>目錄> QuickSort.class

我要的是: algorithms.jar> QuickSort.class

^h我能做到嗎?

回答

4

可以使用arcname參數 - 見http://docs.python.org/library/zipfile.html#zipfile.ZipFile.write

z.write("directory/QuickSort.class","QuickSort.class") 
+0

好吧,似乎工作。這裏仍然有一個小問題: 我使用QInputDialog來獲取.class文件的路徑 如果這是路徑'H:/ Documenten van Walter/Documenten/Python/PyComplexity/src/jar/someclass。 ' 我怎樣才能得到它的弧名呢? – tgoossens

+0

http://docs.python.org/library/os.path.html#os.path.basename – Ofir

0

您可以提供你想要的文件,以在歸檔作爲第二個參數來write像這樣的名字:

In [39]: z = zipfile.ZipFile("jar/algorithms.jar", "w") 

In [40]: z.printdir() 
File Name            Modified    Size 

In [41]: z.write("directory/QuickSort.class", "QuickSort.class") 

In [42]: z.printdir() 
File Name            Modified    Size 
QuickSort.class        2011-08-10 15:26:47   0 

In [43]: z.close() 

另請參閱zipfile documentation

+0

好吧,似乎工作。這裏仍然有一個小問題:我使用QInputDialog來獲取.class文件的路徑,如果這是路徑'H:/文件名van Walter/Documenten/Python/PyComplexity/src/jar/someclass.class'怎麼能然後我得到arcname了? – tgoossens

+0

如果path設置爲'H:/ Documenten van Walter/Documenten/Python/PyComplexity/src/jar/someclass.class',那麼你可以使用os.path的方法如下:'arcname = os.path.basename(os。 path.abspath(路徑))' – sandinmyjoints