Python引发错误(显示在shell中),然后执行其余代码

Python引发错误(显示在shell中),然后执行其余代码,python,exception-handling,raiseerror,Python,Exception Handling,Raiseerror,我有一个名为dictionary.txt的文件,它包含一个英语单词,一个空格,然后在每行中包含该单词的格鲁吉亚语翻译 我的任务是在字典中发现没有对应单词的英语单词时(例如,如果该英语单词没有翻译)提出错误 如果我提出一个ValueError或类似的问题,它会停止代码。 你能给我举个例子吗(如果没有其他选择,请使用try) def extract_word(文件名): final=open('out_file.txt','w') uWords=open('untranslated_words.tx

我有一个名为dictionary.txt的文件,它包含一个英语单词,一个空格,然后在每行中包含该单词的格鲁吉亚语翻译

我的任务是在字典中发现没有对应单词的英语单词时(例如,如果该英语单词没有翻译)提出错误

如果我提出一个
ValueError
或类似的问题,它会停止代码。 你能给我举个例子吗(如果没有其他选择,请使用try)

def extract_word(文件名):
final=open('out_file.txt','w')
uWords=open('untranslated_words.txt','w+'))
f=打开(文件名“r”)
单词=“”
m=[]
对于f中的行:
就我而言:

如果不是('a'引发错误主要是为了允许程序作出反应或终止。在您的情况下,您可能应该使用日志API向控制台输出警告

import logging

logging.warning('Failed to find Georgian translation.') # will print a warning to the console.
将产生以下输出:

WARNING:root:Failed to find Georgian translation.

你也许应该看看


假设
translate(word)
当然会引起翻译错误。

问题不是很清楚,但我认为您可能需要这种代码:

mydict = {}
with open('dictionary.txt') as f:
    for i, line in enumerate(f.readlines()):
         try:
              k, v = line.split() 
         except ValueError:
              print "Warning: Georgian translation not found in line", i   
         else:
              mydict[k] = v
如果
line.split()


请注意,这不会保留原始文件中的行顺序。

请向我们展示您的尝试。请附上您的代码,也不清楚您在问什么。问题对我来说很清楚:/-您的任务很简单-从您的翻译单词列表创建一本字典。每个关键字都是英文单词,值是翻译的单词。如果您在一个不存在的字典中查找一个键,然后将引发
KeyError
,就像任何其他异常一样,如果您没有捕捉到它,程序将自动终止。为了防止这种情况发生,您可以使用
get()
方法,如果密钥不存在,将返回
None
,然后您可以打印适当的消息。谢谢,但它会引发错误,警告不是解决方案,但我会记住它。似乎我不能使用“raise”要这样做。我只是想把它打印出来,就像实际的错误一样,都是红色之类的。无论如何,谢谢。对不起,我的英语。你可能想检查一下,在终端上打印颜色。明白了。谢谢你。最后我和teach谈过了。他说,在这个错误后停止工作是可以的代码),所以这是用简单的提升值错误(“东西”)来完成的。我从评论中学到了很多新东西,谢谢大家
f = open('dictionary.txt')
s = f.readline()
try:
    g = translate(s)
except TranslationError as e:
    print "Could not translate" + s
mydict = {}
with open('dictionary.txt') as f:
    for i, line in enumerate(f.readlines()):
         try:
              k, v = line.split() 
         except ValueError:
              print "Warning: Georgian translation not found in line", i   
         else:
              mydict[k] = v