質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

459閲覧

python ファイル検索とファイル読み込み

itousan

総合スコア8

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/12/31 00:21

【実現したいこと】
'sample.log'にあるデータ(以下参照)を一行ずつ読み込み、
その中の特定文字(下のコードの場合は'group1'や'group2'の部分)と、
ディレクトリ階層を組み合わせてファイルパスを生成
生成したファイルパスでファイルをopenして最終行のデータだけを取り出したい
【参照】
1,田中,Hokkaido,p-hokkaido,group1,
2,山本,Aomori,p-Aomori,group2,

python

1f = open('sample.log', 'r') 2for area_line in f: 3 line = area_line.rstrip() 4 l = area_line.split(",") 5 area_name = l[1] 6 area_word = l[2] 7 area_cate = l[4] 8 9 DIR = "/etc/DATA/" 10#ファイルパス生成 11 file_path = glob.glob(DIR + area_cate + '_3' + '*.log') 12#行をカウント 13 line_counts = sum(1 for line in codecsopen(file_path, 'r')) 14 #print(line_counts) 15 16#最終行を指定して抽出 17 target_line = linecache.getline(file_path, int(line_counts)) 18 tpline = target_line.strip() 19  #print(tpline )

上のような処理を実行すると以下のようなエラーが出ます。
Traceback (most recent call last):
File "./27_test.py", line 68, in <module>
line_counts = sum(1 for line in codecsopen(file_path, 'r'))
NameError: name 'codecsopen' is not defined

文字コード関連はまだ知識が浅くpython上でどう取り扱ってあげればいいかがわかりません。
コードの問題点がわかる方がいらっしゃいましたらアドバイスいただけると幸いです。

以上、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

つcodecs.open

ところで、Pythonなど使わなくてもシェル芸なら1行ですみます。

bash

1$ cat sample.log|awk -F, '$0=$5'|xargs -I@ tail -1 "/etc/DATA/@_3*.log"

投稿2017/12/31 00:36

編集2017/12/31 00:49
hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問