我正在使用以下代碼將.tgz和.tar文件提取到歸檔文件所在的同一目錄中。它適用於單個文件。但是,當我選擇同一目錄中的另一個文件進行提取時,當前文件夾將被覆蓋(所有文件將提取一個名爲storage的根文件夾)。我想這就是文件被覆蓋的原因。所以,我一次只能在目錄中提取一個文件。我試圖想出一種巧妙的方法將文件提取到相同的目錄中,也許一旦提取文件就將提取的文件命名爲唯一。但是,我是一位新手Python程序員,目前還沒有技術訣竅或知識工具集來完成此類任務。任何幫助表示讚賞。就目前而言,每次我想要提取文件時,我都必須選擇不同的輸出目錄。我想提取所有.tgz和.tar文件在一個目錄中
import os, sys, tarfile
def extract(tar_url, extract_path='.'):
print tar_url
tar = tarfile.open(tar_url, 'r')
for item in tar:
tar.extract(item, extract_path)
if item.name.find(".tgz") != -1 or item.name.find(".tar") != -1:
extract(item.name, "./" + item.name[:item.name.rfind('/')])
userpath = "Extracted"
directory = os.path.join("c:\\", userpath)
try:
for root, dirname, files in os.walk(directory):
for file1 in files:
if file1.endswith(".tgz") or file1.endswith(".tar"):
extract(os.path.join(root, file1))
print 'Done!'
except:
name = os.path.basename(sys.argv[0])
print name[:name.rfind('.')], '<filename>'
謝謝,但我已經做到了。我非常有興趣把他們放在同一個文件夾中。 – suffa 2011-06-10 19:50:24
@user在tar文件中有目錄嗎? – tMC 2011-06-10 20:10:17
是的,tar文件中有很多目錄。 – suffa 2011-06-10 22:37:52