2009-05-18 11 views
101
में समाप्त चेतावनी की अनदेखी करने के

मैं इस बार आ रही है? क्या Python में चेतावनियों से बचने का कोई तरीका है?कैसे अजगर

उत्तर

84

रूप warnings module के प्रलेखन से है। int पर कास्टिंग करके, समस्या को हल करने के लिए बेहतर है।

(ध्यान दें कि अजगर 3.2 में, प्रतिवाद चेतावनी डिफ़ॉल्ट रूप से अनदेखी कर रहे हैं।)

+0

कास्टिंग भी काम करता है अनदेखा करना चाहते पर @ignore_warnings डेकोरेटर जोड़ने .. लेकिन झंडा मददगार था! – Mohammed

+6

मेरी इच्छा है कि मैं यह काम कर सकूं ... मुझे एक/usr/bin/env मिलता है: python -W अनदेखा :: बहिष्करण चेतावनी: ऐसी कोई फ़ाइल या निर्देशिका' त्रुटि नहीं। यह काम करता है अगर मैं कमांड लाइन पर '-W अनदेखा :: DeprecationWarning' विकल्प के साथ पायथन चलाता हूं, लेकिन/usr/bin/env इससे निपटता नहीं है। – weronika

+2

एक विंडोज़-केवल समाधान होने लगता है। –

6

सही तर्क पारित करें? : पी

अधिक गंभीर नोट पर, आप अस्वीकृति चेतावनी को अनदेखा करने के लिए दुभाषिया को कमांड लाइन पर तर्क -Wi :: DeprecationWarning को पारित कर सकते हैं।

5

तर्क को int में कनवर्ट करें। अजगर के लिए एक तर्क के रूप में पारित -W ignore::DeprecationWarning:

#!/usr/bin/env python -W ignore::DeprecationWarning 

आप Windows पर हैं: यह रूप में सरल

int(argument) 
2

नहीं आप इसके बारे में मारा लेकिन आप को चेतावनी दी जा रही हैं कि आप की संभावना काम कर रहा है जब आप अगले अपग्रेड अजगर बंद हो जाएगा कर रहे हैं क्या। Int में कनवर्ट करें और इसके साथ किया जाए।

बीटीडब्ल्यू। आप अपनी खुद की चेतावनियां हैंडलर भी लिख सकते हैं। बस एक फ़ंक्शन असाइन करें जो कुछ भी नहीं करता है। How to redirect python warnings to a custom stream?

+0

वह सलाह केवल तभी काम करती है जब यह वास्तव में अपना कोड है और कुछ तृतीय पक्ष पैकेज से नहीं। –

119

तुम सिर्फ अपने कोड ठीक करना चाहिए लेकिन सिर्फ मामले में,

import warnings 
warnings.filterwarnings("ignore", category=DeprecationWarning) 
+1

iPython – zbinsd

+9

का उपयोग करके मेरे लिए काम किया यह मेरे लिए बिल्कुल काम नहीं करता है, अभी भी deprecationwarnings देख रहा है। – user1244215

+1

@ user1244215 मैं गलत हो सकता हूं लेकिन मुझे लगता है कि यह महत्वपूर्ण है कि आपके कोड में आप 'चेतावनियां' चलाते हैं। फिल्टरवार्निंग ("अनदेखा करें", श्रेणी = बहिष्करण चेतावनी)। मुझे लगता है कि आपको चेतावनी थूकने वाली लाइब्रेरी आयात करने के बाद इसे चलाने के लिए है, हालांकि मुझे गलती हो सकती है। –

144

मैं इन था:

import warnings 

with warnings.catch_warnings(): 
    warnings.filterwarnings("ignore",category=DeprecationWarning) 
    import md5, sha 

yourcode() 

अब तुम अब भी मिलती है:

/home/eddyp/virtualenv/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-x86_64.egg/twisted/persisted/sob.py:12: 
DeprecationWarning: the md5 module is deprecated; use hashlib instead import os, md5, sys 

/home/eddyp/virtualenv/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-x86_64.egg/twisted/python/filepath.py:12: 
DeprecationWarning: the sha module is deprecated; use the hashlib module instead import sha 

के साथ फिक्स्ड अन्य सभी DeprecationWarning एस, लेकिन इनके कारण नहीं:

import md5, sha 
+1

बहुत बढ़िया, बहुत बहुत धन्यवाद !! (मुझे एहसास करने के लिए एक पल ले गया कि मैं इस में कोड के गैर-आयात बिट्स भी लपेट सकता हूं, क्योंकि कुछ पैकेज आयात के बाद उपयोग किए जाने पर डिप्रेशन वॉर्निंग भी उत्पन्न कर रहे थे।) केवल विशिष्ट डिप्रेशन वॉर्निंग्स को चुप करने का बहुत अच्छा तरीका है जिसे मैंने पहले ही देखा है और निर्णय लिया है मैं अनदेखा करना चाहता हूँ। – weronika

23

मैं स्पष्ट तरीका (विशेष रूप से खिड़कियों पर) यह करने के लिए मिल गया सेल्सियस के लिए निम्न को जोड़कर है: \ Python26 \ लिब \ साइट-संकुल \ sitecustomize.py:

import warnings 
warnings.filterwarnings("ignore", category=DeprecationWarning) 

ध्यान दें कि मुझे यह फाइल बनाना था। बेशक, अगर आपका अलग है तो पाइथन के रास्ते को बदलें।

0

जब आप केवल कार्यों में चेतावनियों को अनदेखा करना चाहते हैं तो आप निम्न कार्य कर सकते हैं।

import warnings 
from functools import wraps 


def ignore_warnings(f): 
    @wraps(f) 
    def inner(*args, **kwargs): 
     with warnings.catch_warnings(record=True) as w: 
      warnings.simplefilter("ignore") 
      response = f(*args, **kwargs) 
     return response 
    return inner 

@ignore_warnings 
def foo(arg1, arg2): 
    ... 
    write your code here without warnings 
    ... 

@ignore_warnings 
def foo2(arg1, arg2, arg3): 
    ... 
    write your code here without warnings 
    ... 

बस समारोह आप सभी चेतावनियों