如何使用Python读取压缩文件并将其写入另一个文件?

问题描述

我有多个zip,都包含1个文件。这些zip文件中的文件为csv,包含记录分配。这是文件外观的一个示例:

2020-01-01-14:00:00,TM1,TM2,TM3,TM4,TM5,Name2,Name5,Name6,Name7
2020-01-01-14:00:00,Name5
2020-01-01-14:00:00,AGE,Name1,Name3,Name4,Name6
2020-01-01-14:00:00,Name7

我试图读取zip文件(不提取文件),并且基于某些条件,我想将每个文件的行写入新文件中。

这些是条件。仅当两个条件都成立时,我才会将该行读入一个文件

  1. 行中必须至少包含以下单词之一('Name1,Name2,Name3')
  2. 该行中的第五个单词必须为'AGE'

这是我的代码

import zipfile
import os
import pandas as pd
import csv

root = r'c:\data\FF\Desktop\archive\archive.zip'
destination = r'c:\data\FF\Desktop\archive'

with zipfile.ZipFile(root,'r') as my_zip:
    my_zip.extractall(destination)   #<----unzipping the file because I dont kNow how to read it directly :(
   
 
search_age = 'AGE'   
search_names = ['Name1','Name2','Name3']
 
for file in os.listdir(destination):
    if file.endswith('.txt'):   #<--- reading the unzipped file only.
        with open(file,'r') as my_file:
            reader = csv.reader(my_file)
            for row in reader:
                if search_age == row[4] and x for x in search_names in row: #<-- check for AGE and for 'Name1,Name2 or Name3'
                    with open('new_file.txt','w') as new_file:
                        for row in reader:
                            new_file.write(row) #<--- write the found lines to a new file.
                    

现在我有2个问题:

  1. 我收到了 if search_age == row[4] and x for x in search_names in row: ^ SyntaxError: invalid Syntax
  2. 我想直接读取zip文件,而不是先解压缩文件

我希望我的new_file看起来像这样:

2020-01-01-14:00:00,Name7

有人可以告诉我如何解决此问题?谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)