我有一个包含许多.tar.gz文件的文件夹。在python中,我想对每个文件进行解压或压缩,并找到包含要提取的字符串的文本文件?

我有一个包含许多.tar.gz文件的文件夹。在python中,我想对每个文件进行解压或压缩,并找到包含要提取的字符串的文本文件?,python,jupyter-notebook,filereader,tar,gzip,Python,Jupyter Notebook,Filereader,Tar,Gzip,我有许多gz.tar压缩文件的主文件夹。因此,我需要解压两次,以获得一个包含文本的数据文件,然后我提取文本中的某个字符串。我在解压到包含文本的文件时遇到问题,然后移动到下一个文件并执行相同的操作。将结果保存在数据帧中 import os import tarfile for i in os.listdir(r'\user\project gz'): tar = (i, "r:gz") for m in tar.getmembers(): f= tar.extractfile(member

我有许多gz.tar压缩文件的主文件夹。因此,我需要解压两次,以获得一个包含文本的数据文件,然后我提取文本中的某个字符串。我在解压到包含文本的文件时遇到问题,然后移动到下一个文件并执行相同的操作。将结果保存在数据帧中

import os
import tarfile
for i in os.listdir(r'\user\project gz'):
 tar = (i, "r:gz")
 for m in tar.getmembers():
  f= tar.extractfile(member):
  if f is not None:
   content = f.read()
   text = re.findall(r"\name\s", content)
   df = pd.Dataframe(text)
   print(df)

我猜您想在\user\project gz\*.tar.gz中找到包含字符串\name\s的文件

解决办法是

导入操作系统 进口稀土 导入tarfile 作为pd进口熊猫 行=[] 值=[] 对于os.listdirr'\\user\\project gz'中的文件名: 如果filename.endswith'.tar.gz': tar=tarfile.openr'\\user\\project gz'+文件名 对于tar.getmembers中的文本文件: f=tar.extractfiletext\u文件 如果f不是无: 内容=f.read.decode 如果re.findallr\\name\\s,内容: row.appendtext_file.name value.appendcontent 柏油 df=pd.DataFramevalue,列=['nametag'],索引=行 printdf
尝试内置模块tarfile?@james Liu是的,我导入了tarfile。但当我解压两次时,仍然会有问题,每个文件中都有50个左右的文件。我只需要一个.txt文件来运行字符串搜索。@steve哪个特定文件?所以一旦我进入这些tar.gz文件,我就在寻找一个文本文件。此文本文件具有名称标签。我正在尝试将文件名和名称标记复制到数据帧中。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。file.tar->>file.gz-->file.txt。。。。。。。。。。在这个文本文件中有一个名称标签。我想将文件名和nametag复制到dataframe以提取。UnicodeDecodeError:“utf-8”codex无法解码位置0中的字节0xff:无效的起始字节您可以尝试f.read。解码“utf-8”,errors='ignore'以忽略error,但更好的修复方法是传递正确的编码=。如果无法查看文件中的字节,我们无法告诉您它们包含哪些编码。如果你自己不能解决问题,也许可以在网上发布一个新问题。另见