Python 删除tar.gz文件中的一个文件并再次压缩存档

Python 删除tar.gz文件中的一个文件并再次压缩存档,python,compression,extract,archive,tarfile,Python,Compression,Extract,Archive,Tarfile,我有一个文件tar.gz,我想将其解压缩,然后删除以“net_u”开头的文件,然后用相同的名称再次压缩文件: #!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys, getopt import tarfile import glob import tempfile import shutil import json import urllib import boto3 import logging key =

我有一个文件tar.gz,我想将其解压缩,然后删除以“net_u”开头的文件,然后用相同的名称再次压缩文件:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import sys, getopt
import tarfile
import glob
import tempfile
import shutil
import json
import urllib
import boto3
import logging


key = 'file_14747.tar.gz'
filepath = os.path.join('/tmp/', key)
if os.path.basename(filepath).startswith('file_'):
  file_key = tarfile.open(filepath, "w:gz")
  file_key.extractall()
  file_key.close()
# suppression de fichier net
for file in os.listdir("/tmp/"):
  if file.startswith('net_'):
    os.remove(file)
# compresser les fichiers
tar = tarfile.open('/tmp/'+key, "w:gz")
for file_name in os.listdir("/tmp/"):
  print(file_name)
  if file_name.endswith('.csv'):
    print(" Adding %s..." % file_name)
    tar.add(file_name, os.path.basename(file_name))
tar.close()
我尝试过这个,但每次我得到一个空文件.tar.gz,我丢失了所有的文件,我没有得到我想要的。
如何打开存档、删除一个文件并再次压缩存档?

您当前的目录是什么?是
/tmp
还是别的什么?事实上,我在AWS Lambda中运行这个脚本,所以我只能在/tmp/文件夹中工作。解压缩文件可能会在
/tmp
下创建一个单独的目录,所有文件都位于该目录下。请注意,
用于os.listdir(“/tmp/”)中的文件名:
只生成文件的基名称。
。也许您需要
os.walk`或glob.glob(“/tmp/**”)@Jean-Françoisfare是正确的,删除文件时需要确保使用绝对文件路径。第二个
for
循环(将文件添加到存档)也是如此。在这里,您还可以使用
glob.glob('/tmp/*.csv')
(需要
导入glob
)。它允许使用通配符并返回绝对路径。您当前的目录是什么?是
/tmp
还是别的什么?事实上,我在AWS Lambda中运行这个脚本,所以我只能在/tmp/文件夹中工作。解压缩文件可能会在
/tmp
下创建一个单独的目录,所有文件都位于该目录下。请注意,
用于os.listdir(“/tmp/”)中的文件名:
只生成文件的基名称。
。也许您需要
os.walk`或glob.glob(“/tmp/**”)@Jean-Françoisfare是正确的,删除文件时需要确保使用绝对文件路径。第二个
for
循环(将文件添加到存档)也是如此。在这里,您还可以使用
glob.glob('/tmp/*.csv')
(需要
导入glob
)。它允许使用通配符并返回绝对路径。