2016-04-11 5 views
0

以下のスクリプトを実行すると、MasterGroupListのエントリの60%で動作しますが、突然以下のエラーで失敗します。私の質問は貧弱であるように見えますが、以前は私を助けてくれました。どのように私はこのエラーを避けることができる任意のアイデア?またはスクリプトから何がtrhoughingですか? masterGroupListは、次のようになります。PythonのActive_directoryでAttributeErrorを解決するにはどうすればいいですか?

SET00のパワーユーザー

SET00 USERS

SEF00 CREATORS

SEF00 USERS

ADから引き出さ

グループ...別の300個のエントリ...

エラー:

Traceback (most recent call last): 
    File "C:\Users\ks185278\OneDrive - NCR Corporation\Active Directory Access Scr 
ipt\test.py", line 44, in <module> 
    print group.member 
    File "C:\Python27\lib\site-packages\active_directory.py", line 805, in __getat 
tr__ 
    raise AttributeError 
AttributeError 

コード:

from active_directory import * 
import os 

file = open("C:\Users\NAME\Active Directory Access Script\MasterGroupList.txt", "r") 
fileAsList = file.readlines() 
indexOfTitle = fileAsList.index("Groups Pulled from AD\n") 
i = indexOfTitle + 1 
while i <= len(fileAsList): 
    fileLocation = 'C:\\AD Access\\%s\\%s.txt' % (fileAsList[i][:5], fileAsList[i][:fileAsList[i].find("\n")]) 
    #Creates the dir if it does not exist already 
    if not os.path.isdir(os.path.dirname(fileLocation)): 
     os.makedirs(os.path.dirname(fileLocation)) 
    fileGroup = open(fileLocation, "w+")  
    #writes group members to the open file 
    group = find_group(fileAsList[i][:fileAsList[i].find("\n")]) 
    print group.member 
    for group_member in group.member: #this is line 44 
     fileGroup.write(group_member.cn + "\n") 
    fileGroup.close() 
    i+=1 
+0

'find_group'の定義を提供してください – th3an0maly

+0

これは[active_directory](http://timgolden.me.uk/python/active_directory.html)モジュールの一部です。 –

+0

@ th3an0malyで提供されている名前で広告内のグループを検索します。これは、 "これは44行目"と表示されている行と関係がありますか、またはactive_directoryモジュールの動作方法は –

答えて

0

免責事項:私は、Pythonを知らないが、私はかなりよくActive Directoryを知っています。

それはこの上で失敗だ場合:

for group_member in group.member: 

それはおそらくグループにメンバーがいないことを意味します。

phythonの処理方法によっては、グループにメンバが1つしかなく、group.memberが配列ではなくプレーンな文字列であることも考えられます。

print group.memberとは何ですか?

active_directory.pyのソースコードはここにある:https://github.com/tjguk/active_directory/blob/master/active_directory.py

これらは、関連する行は、次のとおりです。

if name not in self._delegate_map: 
     try: 
      attr = getattr(self.com_object, name) 
     except AttributeError: 
      try: 
       attr = self.com_object.Get(name) 
      except: 
       raise AttributeError 

だから、それはちょうどあなたが見上げている属性を見つけることができないことのように見え、この場合は 'member'属性のように見えます。

+0

です。 group.memberは、ブレークする前の最後のグループのメンバーのADパスです。私は次のグループにはメンバーがいないので処理が必要であることはわかっていますが、それはもっともらしいです。 ADモジュールを見ると、属性エラーを返すコードのセクションのように見え、オブジェクトのプロパティを取得しようとしています。 –

+0

私の答えにactive_directory.pyのソースコードを追加しました。 –

+0

それ以上のテストでは、唯一の空のグループであり、それが唯一の問題グループであることが100%正しいと思われます。ここで、Pythonを操作して、そのコードを実行する前にグループが空であるかどうかを調べる方法を解説します。特定のADがこれを意味するかどうか知っていますか? –

関連する問題