2017-12-04 6 views
0

私はログデータを7つのファイルに分割しています。私は、ログデータファイルの1Pythonでログデータをマージする

207.46.13.124 - - [01/Jun/2015:00:00:04 +0000] "GET /maritime/collections/hmsconway/hiscock/index.aspx HTTP/1.0" 200 "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 

内のファイルの名前を行の例を提供している下にはu_ex150601u_ex150602u_ex150603u_ex1506014u_ex150605u_ex150606、およびu_ex150607です。

これらをすべてPythonだけでマージするにはどうすればよいですか?

答えて

3

私は個人的にbashの使用をお勧めします。何かのように、

cat u_ex15* >> all_logs 

しかし、Pythonであなたは、単に次のように使用することができます。

import glob 
all_log_filename = 'all_logs' 
log_files = glob.glob('u_ex15*') 
for filename in log_files: 
    with open(filename) as reader: 
     with open(all_log_filename, 'a') as writer: 
      writer.write(reader.read()) 

:これはあなたのログファイルがその大きくない最も単純なケースです。ログファイルが大きい場合は、メモリの問題が発生しないように、各行またはチャンクを繰り返し処理します。あなたができる最も簡単なことは、次のようなものです:

for filename in log_files: 
    with open(filename) as reader: 
     with open(all_log_filename, 'a') as writer: 
      for line in reader: 
       writer.write(line) 
関連する問題