2013-03-07 20 views
0

(文件)在try ... except塊我要記錄的異常錯誤消息,除了路徑中的文件。開放除了

try: 
    doc = etree.parse(urllib2.urlopen(url)) 
except Exception, e: 

    print '%s: %s' % (e, url) 
    with open('error.txt', 'a') as f: 
    f.write('%s:%s\n' % url, e) 
    return 

打印顯示錯誤,但打開顯示... f.write不被執行。

在同一個腳本的relaxng驗證寫入文件

if not RELAXNG.validate(doc): 
    with open('error.txt', 'a') as f: 
    f.write('%s\n' % RELAXNG.error_log) 
    return 

誰能給我解釋一下,爲什麼

with open('myfile.txt', 'a') as f 
    f.write(... 

如果聲明更多鈔票,而不是在一個除了

+0

考慮使用[記錄模塊(http://docs.python.org/2/howto/logging.html#basic-logging-tutorial) – 2013-03-07 12:26:55

回答

4

write()不接受多個參數;你可能缺少括號:

f.write('%s:%s\n' % (url, e)) 

除此之外,使用絕對路徑,而不是相對的,你可以很容易地在一個意想不到的地方寫文件,否則。

0

except文件操作工作正常。

>>> try: 
    raise SyntaxError("Hello") 
except Exception: 
    with open("in.txt") as f: 
     print "F" 


F 
0

它應該工作。試試這個例子:

try: 
    raise Exception 
except Exception: 
    with open('error.txt', 'a') as f: 
     f.write('foobar') 

如果你運行上面你會看到foobar被寫入文件。

通過你的進程error.txt可寫的?有一些原因,它不是寫你的文件,但因爲「與」文件上下文不內允許的攔網除外事實並非如此。