2011-08-10 7 views
2
私のpython 私が現在使用しているコードのzipファイルモジュールを試してい

はこれです:のpython zipファイルのディレクトリがコピーされますあまりにも

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

問題は、私のファイルは、以下のようにjarファイルに追加されていることである。

algorithms.jar>ディレクトリ> QuickSort.class

私が欲しいのです: algorithms.jar> QuickSort.class

H私はこれを達成することはできますか?

答えて

4

あなたはarcnameパラメータを使用することができます - あなたは、ファイルがこのようなwriteの2番目のパラメータとして、アーカイブにしたい名前を供給することができますhttp://docs.python.org/library/zipfile.html#zipfile.ZipFile.write

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

これはうまくいくようです。 私はQInputDialogを使用して.classファイルへのパスを取得します。 これがパス 'H:/ Documentn van Walter/Documenten/Python/PyComplexity/src/jar/someclassの場合は、これを使用します。クラス ' どのように私はそれからアークネームを得ることができますか? – tgoossens

+0

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

0

を参照してください。

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を使用して、パス 'H:/ Documenten van Walter/Documenten/Python/PyComplexity/src/jar/someclass.class'であれば.classファイルへのパスを取得します。私はそれからarcnameを得ますか? – tgoossens

+0

パスが 'H:/ Documenten van Walter/Documenten/Python/PyComplexity/src/jar/someclass.class'に設定されている場合、次のようにos.pathのメソッドを使用できます: 'arcname = os.path.basename(os。 path.abspath(path)) ' – sandinmyjoints

関連する問題