私はpythonデコレータを学ぼうとしていて、次のコードを書きました。しかし、それはエラーを出し続けます。
import os
import sys
def authenticate(fn):
def wrapper(*args):
euid = os.geteuid()
if euid != 0:
print "This command requires privliged mode. Enter password.."
args = ['sudo', sys.executable] + sys.argv + [os.environ]
os.execlpe('sudo', *args)
fn(*args)
return wrapper
@authenticate
def show_files(dir):
files = [f for f in os.listdir(dir)]
for file in files:
if os.path.isfile(file):
print file
dir = raw_input("Please enter a directory name\t")
show_files(dir)
次のトレースバックを取得します。
Traceback (most recent call last):
File "auth1.py", line 24, in show_files(dir)
File "auth1.py", line 11, in wrapper fn(*args)
File "auth1.py", line 16, in show_files files = [f for f in os.listdir(dir)]
OSError: [Errno 2] No such file or directory: ''
アイデアは、show_files
自分自身を認証できるユーザーに対してのみ関数を実行することです。私の問題は、認証の記述方法とexeclpe
呼び出しのようです。どんな助けでも感謝します。