繁体   English   中英

使用 Python 将所有文本文件及其包含在所有 .zip 文件中的内容连接到一个文本文件中

[英]Concat all the text files and their content contained in all the .zip files in a text file using Python

我正在尝试编写一个程序来读取文件夹中的所有文件并将它们的所有内容输出到一个文件中。 文件以 .gz 扩展名压缩。 我设法读取了一个文件,但不是它的所有内容,而不是其余的文件。 这是我的代码:

import glob, gzip, re
import pickle

filed = open('Logs.txt', 'w')


logfilenames = glob.glob('*.gz')




logformat = re.compile(r'^\S+ \S+ \S+ \[([\w:/]+\s[+\-]\d{4})\] "(\S+) (\S+) .*" (\d+) (\d+) "([^"]*)" "[^"]*"')
with gzip.GzipFile(logfilenames[0],'r') as f:
    for i in glob.glob('*.gz'):
        txtline = f.readline()
        parsedline = logformat.match(txtline)
        print "time={t} size={s} url={u}".format(t=parsedline.group(1), s=parsedline.group(5), u=parsedline.group(3))

        pickle.dump(["time={t} size={s} url={u}".format(t=parsedline.group(1), s=parsedline.group(5), u=parsedline.group(3))],filed)

filed.close()

试试这个(没有触及你的正则表达式):

import glob, gzip, re
import cPickle

logformat = re.compile(r'^\S+ \S+ \S+ \[([\w:/]+\s[+\-]\d{4})\] "(\S+) (\S+) .*" (\d+) (\d+) "([^"]*)" "[^"]*"')

with open('Logs.txt', 'w') as f_out:
    for i in glob.glob('*.gz'):
        with gzip.GzipFile(i,'r') as f_in:
            for txtline in f_in:
                parsedline = logformat.match(txtline)
                if parsedline:
                    f_out.write("time={t} size={s} url={u}".format(t=parsedline.group(1), s=parsedline.group(5), u=parsedline.group(3)))

将其另存为 xD.sh

mkdir dir
mv $file dir
cd dir
tar -zxvf $file
for file in `ls -w 1 | grep -v ".gz"`; do
cat $file >> joint-file
done
mv joint-file ../
rm -rf dir

然后从 python 中使用它

import os
cmd = './xd.sh'
os.system(cmd)

=)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM