実現したいこと
- centOSで認証が必要なファイルをPythonで開きたい。
- 素のエラーログが見づらいので、加工・装飾した表示にしたくてプログラムを組んでいます。
前提
CentOS 7上のPython3.7で、テキスト型ファイルを開いて、内容を表示するcgiを作成しています。
色々とググりながらやってみましたが、うまくいきません。
下記のコードでは、「ファイルがが存在しません。」と表示されてしまいます。
ファイル自体は存在していて、そのパスも間違っていません。
ファイルのオーナーとパスワードは分かっているのですが、どうやると開けるのか分かりません。
こういうファイルは、Pythonで開けないのでしょうか?
開く方法がありましたら教えて下さい。
発生している問題・エラーメッセージ
ファイルが存在するのに、Pythonからではファイルが見つからない。
該当のソースコード
python3
1#!/usr/local/bin/python3.7 2# coding:utf-8 3 4# ▼▼▼▼▼▼▼▼▼▼ セッティング ▼▼▼▼▼▼▼▼▼▼ 5defaultPath = '/var/log/httpd/' # 対象ファイルのあるディレクトリ、末尾に「/」が要る 6defaultFileName = 'error_log' # 対象のファイル名 7# ▲▲▲▲▲▲▲▲▲▲ セッティング ▲▲▲▲▲▲▲▲▲▲ 8 9print('Content-type: text/html; charset=UTF-8\n\n') 10 11import sys 12import cgi 13 14try: 15 print('処理を始めます。<br>') 16 filePath = defaultPath + defaultFileName 17 f = open(filePath, 'r') 18 print('ファイルがオープンできました。<br>') 19 20 datalist = f.readlines() 21 print(str(len(datalist)) + '行のログを読み込みました。<br>') 22 23 for data in datalist: 24 print (data.rstrip('\n')) 25 print ('<br>') 26 27except OSError as e: 28 # ファイルが存在しなかった場合 FileNotFoundError が発生します。 29 print('ファイルがが存在しません。ファイルパス: ' + filePath) 30 sys.exit() 31 32except Exception as e: 33 # open 関数で指定した文字エンコーディングが異なっていると、 read メソッドを実行したときに UnicodeDecodeError が発生します。 34 print(e) 35 sys.exit() 36 37finally: 38 f.close()
試したこと
- 認証のないファイルは上記コードで意図通りに開き表示されました。
- ファイルのプロパティを見ると、親フォルダーが「admin:///var/log/httpd」になっているので、それを記述してみましたが変わりません。
- ファイルとそのディレクトリのオーナーとグループを通常ユーザーに変えてみましたが「ファイルがが存在しません。」になります。
- ブラウザのキャッシュを削除してみましたが変わりません。
補足情報(FW/ツールのバージョンなど)
- CentOS Linux 7
- Python 3.7.16

回答1件
あなたの回答
tips
プレビュー