2016-07-25 33 views
2

私のコードとしてPythonコード(python2.7.12)をデバッグしていますが、データベースにツイートをストリーミングするときにすべての変数がNULLになります。Exception AttributeError: "'NoneType'オブジェクトに 'path'属性がありません。

私が得たエラーは、次のとおりです。私はこのエラーを想定しています

Exception AttributeError: "'NoneType' object has no attribute 'path'" in <function _remove at 0x10068f140> ignored 

次のコードからさ:

def put_tweets_in_database(tweets): 
    print "putting tweets in database" 
    errors = 0 
    count = 0 

    for tweet in tweets: 
     try: 
      commit_tweet_to_database(tweet, count, len(tweets)) 
      count += 1 
     except Exception as e: 
      print e 
      session.rollback() 
      errors += 1 
    print 'there were {} errors'.format(errors) 

私は...

機能 commit_tweet_to_database()が間違っているとは思いません

あなたは何か考えていますか?私はどんな助けもありがとう!

ありがとうございます。

+0

コンテキストにユーザ定義の '_remove'がないと賭けています。エラーの行番号がなく、ループの繰り返しの間に例外が発生します。だから私はそれがループのイテレータと関係があり、おそらくPythonのバグだと思っています。 –

+0

注:エラーは 'pdb'(韻を意図していません)でコードをステップ実行するときにのみ発生します。 –

答えて

0
Exception AttributeError: "'NoneType' object has no attribute 'path'" in <function _remove at 0x10068f140> ignored 

これは、関数_remove属性pathNoneTypeオブジェクトにアクセスすることを試みたことを告げます。 NoneTypeオブジェクトには属性がありません。だからあなたは_remove関数を見てそこからデバッグを開始する必要があります。

-1

私は同じエラーを持っているし、ここに私の場合です:

ブラウザ= webdriver.Firefox()

browser.get( 'http://www.google.com')

印刷browser.title

  • 次のエラーメッセージが表示されます: 'NoneType'オブジェクトに 'path'属性がありません

browser.quit()

  • これ以下はエラーに

browser.close()

を与えることはありませんので、問題は、あなたのオブジェクトのために間違った方法を使用しているということです!

+0

close()はquit()と異なります。それらを交換することはできません –

2

このエラーも処理しています。私はbrowser.close()メソッドを使用しようとしましたが、 'NoneType'オブジェクトには属性 'path'がありません。表示されていないので、開いているFirefoxのブラウザインスタンスが残っています。

.close()メソッドはchromeを閉じ、fireTypeにNoneTypeエラーをスローしませんが、firefoxを開いたままにします。 .quit()メソッドは両方のブラウザを閉じますが、Firefoxのエラーをスローします。

私は自分のコードにdjangoのStaticLiveServerTestCaseクラスを使用しています。

私は物事をテストするために少しデバッガーループを書いた。 .quit()および.close()ステートメントのコメントを外してコメントアウトするだけです。

class BaseTestCase(StaticLiveServerTestCase): 

    @classmethod 
    def setUp(self): 

     self.firefox = webdriver.Firefox() 
     self.chrome = webdriver.Chrome() 
     self.browsers = [self.firefox, self.chrome] 

    @classmethod 
    def tearDown(self): 

     for browser in self.browsers: 
      if browser == self.firefox: 
       print('firefox') 
       browser.close() 
       # browser.quit() 
      elif browser == self.chrome: 
       print('chrome') 
       browser.close() 
       # browser.quit() 

私はまだ答えは分かりませんが、これは正しい方向へのステップだと思います。

+0

今、元の質問が実際に@Dungと私自身によって返答されているかどうか疑問に思っています。 – Pat

+0

これは実際の質問に対する答えではありません... selenium.browser.quit()のPython Selenium 3.xモジュールの例外です。 – RVT

+0

close()はquit()と異なります...それらを交換するだけではありません –

0

"try"句が失敗しても例外が表示されますが、私はおそらく実行可能なパラメータを渡していることを確認するために、commit_tweet_to_databaseへの引数を出力するなど、例外キャッチにデバッグを追加することになります。

関連する問題