<html><head></head><body bgcolor="#FFFFFF"><div><br></div><div>On Jan 6, 2012, at 22:57, daedae11 &lt;<a href="mailto:daedae11@126.com">daedae11@126.com</a>&gt; wrote:<br><br></div><div></div><blockquote type="cite"><div>

<meta content="text/html; charset=us-ascii" http-equiv="Content-Type">
<style>
BLOCKQUOTE {
        MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; MARGIN-LEFT: 2em
}
OL {
        MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
UL {
        MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
P {
        MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
BODY {
        LINE-HEIGHT: 1.5; FONT-FAMILY: &#24494;&#36719;&#38597;&#40657;; COLOR: #000000; FONT-SIZE: 10.5pt
}
</style>

<meta name="GENERATOR" content="MSHTML 9.00.8112.16440">

<div>I was asked to write a program to move files between ZIP(.zip) and 
TAR/GZIP(.tgz/.tar.gz) or TAR/BZIP2(.tbz/.tar.bz2) archive. </div>
<div>&nbsp;</div>
<div>my code is:</div>
<div>&nbsp;</div>
<div>
<div>&nbsp;</div>
<div>import&nbsp;zipfile;</div>
<div>import&nbsp;tarfile;</div>
<div>import&nbsp;os;</div>
<div>from&nbsp;os&nbsp;import&nbsp;path&nbsp;;</div>
<div>&nbsp;</div>
<div>def&nbsp;showAllFiles(fileObj):</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;fileObj.filename.endswith("zip"):</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;isinstance(fileObj,&nbsp;zipfile.ZipFile):</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"j"*20;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;name&nbsp;in&nbsp;fileObj.namelist():</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;name;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;else:</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;name&nbsp;in&nbsp;fileObj.getnames():</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;name;&nbsp;</div>
<div>&nbsp;</div>
<div>def&nbsp;moveFile(srcObj,&nbsp;dstObj):</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;fileName&nbsp;=&nbsp;raw_input("input&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;file&nbsp;to&nbsp;move:&nbsp;");&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;srcObj.extract(fileName);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;isinstance(dstObj,&nbsp;zipfile.ZipFile):</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dstObj.write(fileName);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;else:</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dstObj.addfile(tarfile.TarInfo(fileName));</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;os.remove(fileName);&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div>def&nbsp;main():</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;intro&nbsp;=&nbsp;"""</div>
<div>enter&nbsp;a&nbsp;choice</div>
<div>(M)ove&nbsp;file&nbsp;from&nbsp;source&nbsp;file&nbsp;to&nbsp;destinatiom&nbsp;file</div>
<div>(S)how&nbsp;all&nbsp;the&nbsp;files&nbsp;in&nbsp;source&nbsp;file</div>
<div>(Q)uit</div>
<div>your&nbsp;choice&nbsp;is:&nbsp;"""&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;srcFile&nbsp;=&nbsp;raw_input("input&nbsp;the&nbsp;source&nbsp;file&nbsp;name:&nbsp;");</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;dstFile&nbsp;=&nbsp;raw_input("input&nbsp;the&nbsp;destination&nbsp;file&nbsp;name:&nbsp;");</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;True:</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;(&nbsp;zipfile.ZipFile(srcFile,&nbsp;"r")&nbsp;if&nbsp;srcFile.endswith("zip")&nbsp;else&nbsp;tarfile.open(srcFile,&nbsp;"r"+":"+path.splitext(srcFile)[1][1:])&nbsp;)&nbsp;as&nbsp;srcObj,&nbsp;\</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;zipfile.ZipFile(dstFile,&nbsp;"r")&nbsp;if</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dstFile.endswith("zip")&nbsp;else</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tarfile.open(dstFile,&nbsp;"w"+":"+path.splitext(dstFile)[1][1:])&nbsp;)&nbsp;as&nbsp;dstObj:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;choice&nbsp;=&nbsp;raw_input(intro)[0].lower();</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;choice&nbsp;==&nbsp;"s":</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;showAllFiles(srcObj);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif&nbsp;choice&nbsp;==&nbsp;"m":</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveFile(srcObj,&nbsp;dstObj);</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif&nbsp;choice&nbsp;==&nbsp;"q":</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"invalid&nbsp;command!"</div>
<div>&nbsp;</div>
<div>if&nbsp;__name__&nbsp;==&nbsp;'__main__':</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;main();</div></div>
<div>&nbsp;</div>
<div>But there are some problems.</div>
<div>1. It could extract file&nbsp;successfully, but can't add files to .tar.gz 
file.</div>
<div>2. I think it's a little tedious, but I don't know how to improve it.</div>
<div>&nbsp;</div>
<div>Please&nbsp; give me some help , thank you!</div>
<div>&nbsp;</div>
<hr style="WIDTH: 210px; HEIGHT: 1px" align="left" color="#b5c4df" size="1">

<div><span>daedae11</span></div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Tutor maillist &nbsp;- &nbsp;<a href="mailto:Tutor@python.org">Tutor@python.org</a></span><br><span>To unsubscribe or change subscription options:</span><br><span><a href="http://mail.python.org/mailman/listinfo/tutor">http://mail.python.org/mailman/listinfo/tutor</a></span><br></div></blockquote><br><div>Hi there. I would start by handling file extensions other than ZIP in your first two functions. Why not handle if the file is a tgz or tbz within the functions. Also I don't see the purpose of the first function, "showallfiles" it prints out twenty "j"s?</div><div>Looking forward to your response.&nbsp;</div><div>Alexander</div></body></html>