2
#---------------------------------------------------------
#  Print days diff by Converting Unix timestamp to Readable Date/time
#---------------------------------------------------------
def convUnixTime(t):
        return 1+(datetime.datetime.fromtimestamp(t*60*60*24)
              - datetime.datetime.today()).days


#---------------------------------------------------------
# Read shadow file and check for account expires and create dictionary 
#---------------------------------------------------------
with open( "/etc/shadow" ) as shadow:
        for aLine in shadow:
                filed = aLine.split(":")
                f = filed[7]
                try:
                    f = int(f)
                    f=convUnixTime(f)
                except ValueError:
                    f = "NULL"
                if f != "NULL" and f <= 0:
                        total_expired_users += 1
                        expr_list[ filed[0] ] = f
                elif f != "NULL" and f <= min_days:
                        total_expring_users += 1
                        expr_list[ filed[0] ] = f

アカウントの有効期限が切れたユーザーの辞書を作成しましたが、これはよりクリーンでシンプルな方法で行われたと思います..

前もって感謝します!!

4

3 に答える 3

1

これは、 try-except句を使用するとよりきれいに見える場合があります。

try:
    f = int(f)
    f=convUnixTime(f)
except ValueError:
    pass
else:
    if f <= 0:
      total_expired_users += 1
      expr_list[ filed[0] ] = f
    elif f <= min_days:
      total_expring_users += 1
      expr_list[ filed[0] ] = f

expr_list[filed[0]]重複を避けるために、順序を少し変更することもできます。

if f <= min_days:
    expr_list[filed[0]] = f

    if f <= 0:
        total_expired_users += 1
    else:
        total_expiring_users += 1
于 2013-06-13T04:39:00.413 に答える