Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的gzip多个文件_Python_File Io_Gzip - Fatal编程技术网

python中的gzip多个文件

python中的gzip多个文件,python,file-io,gzip,Python,File Io,Gzip,我必须将大量XML文件压缩到文件中,并按文件名中的数据进行拆分,为了澄清起见,有一个解析器从XML文件中收集信息,然后将其移动到备份文件夹。我的代码需要根据文件名中的日期对其进行gzip,并将这些文件分组到一个压缩的.gz文件中 请查找下面的代码: import os import re import gzip import shutil import sys import time # timestr = time.strftime("%Y%m%d%H%M") logfile = 'D

我必须将大量XML文件压缩到文件中,并按文件名中的数据进行拆分,为了澄清起见,有一个解析器从XML文件中收集信息,然后将其移动到备份文件夹。我的代码需要根据文件名中的日期对其进行gzip,并将这些文件分组到一个压缩的.gz文件中

请查找下面的代码:

import os
import re
import gzip
import shutil
import sys
import time    
#
timestr = time.strftime("%Y%m%d%H%M")
logfile = 'D:\\Coleta\\log_compactador_xml_tar'+timestr+'.log'
ptm_dir = "D:\\PTM\\monitored_programs\\"
count_files_mdc = 0
count_files_3gpp = 0
count_tar = 0

#
for subdir, dir, files in os.walk(ptm_dir):
    for file in files:
        path = os.path.join(subdir, file)
        try:
            backup_files_dir = path.split(sep='\\')[4]
            parser_id = path.split(sep='\\')[3]
            if re.match('backup_files_*', backup_files_dir):
                if file.endswith('xml'):
                    # print(time.strftime("%Y-%m-%d %H:%M:%S"), path)
                    data_arq = file[1:14]
                    if parser_id in ('parser-924'):
                        gzip_filename_mdc = os.path.join(subdir,'E4G_PM_MDC_IP51_'+timestr+'_'+data_arq)
                        with open(path, 'r')as f_in, gzip.open(gzip_filename_mdc + ".gz", 'at') as f_out_mdc:
                            shutil.copyfileobj(f_in, f_out_mdc)
                            count_files_mdc += 1
                            f_out_mdc.close()
                            f_in.close()
                            print(time.strftime("%Y-%m-%d %H:%M:%S"), "Compressing file MDC: ",path)
                            os.remove(path)

        except PermissionError:
             print(time.strftime("%Y-%m-%d %H:%M:%S"), "Permission error on file:", fullpath, file=logfile)
                    pass
        except IndexError:
            print(time.strftime("%Y-%m-%d %H:%M:%S"), "IndexError: ", path, file=logfile)
        pass
只要它创建了一个数据流,然后用指定的文件名压缩并写入一个新文件。但是,它没有在“.gz”文件中单独分组每个XML文件,而是在“gzip”文件中创建一个与输出“gzip”文件同名但没有任何扩展名的大文件(大数据流?)。在文件完全压缩后,不可能解压缩“gzip”输出文件中生成的大文件。有人知道我的代码哪里有问题吗


PS:为了便于阅读,我对代码进行了编辑。

将代码分解成更小的函数将有助于。。。您正在尝试创建一个包含大量其他文件的gzip文件吗?请也修复您的缩进。您可能可以使用基本调试技术自己解决此问题:@Harvey确切地说,我需要创建一个gzip文件,其中包含算法中捕获的所有XML文件。关于缩进,对我来说,它显示了正确的缩进,你能评估一下什么是错误的,这样我就可以尽快纠正它。非常感谢。@Tom Dalton,我已经做了很多故障排除,但直到现在我还没有找到,但是,我会检查链接,看看是否遗漏了什么。非常感谢您的回复。