标签: try-except

python try/except/else 递归

Python 版本:2.7。操作系统:Windows 10 64 位。

注意:我找到了一种解决下面描述的问题的方法,该方法不使用 try/except/else 语句。我问下面的问题只是因为我很好奇为什么代码的行为方式如此,以及是否有办法使用 try/except/else 来做我想做的事情。

我有一个名为 的文件blah.py,其中包含以下代码:

import os

def makeFolder(dirName, num = 0):
    try:
        os.mkdir(dirName + '_' + str(num)) #error if argument of os.mkdir already exists
    except:
        makeFolder(dirName, num = num + 1)
    else:
        return dirName + '_' + str(num)
Run Code Online (Sandbox Code Playgroud)

现在我转到 Powershell,然后键入:

import blah
myStr = blah.makeFolder('myFolder')
print myStr
print type(myStr)
Run Code Online (Sandbox Code Playgroud)

它做我所期望的 - 创建了一个名为 myFolder_0 的文件夹,并打印myFolder_0<type 'str'>. 现在,仍然在 Powershell 中,我输入:

myStr1 = blah.makeFolder('myFolder')
print myStr1
print type(myStr1)
Run Code Online (Sandbox Code Playgroud)

这次它创建了一个名为 …

python recursion try-except

1
推荐指数
1
解决办法
6555
查看次数

在Python中,如果函数抛出错误,如何重新运行它

下面是我的代码片段,我想知道的是,假设如果函数 main2() 由于某种原因抛出错误,我如何让我的异常在它中断之前再次运行相同的函数 3 次?

只是在这里补充一下,任何函数都可能会抛出错误(不仅仅是 main2()),而且我可能不仅有 3 个函数,还有更多函数

import numpy as np

def main():
    np.load('File.csv')

def main1():
    np.load('File1.csv')

def main2():
    np.load('File2.csv')

for i in range(1, 10):
    try:
        main()
        main2()
        main3()
    except Exception as e:
        print e
    else:
        break
Run Code Online (Sandbox Code Playgroud)

python error-handling try-except

1
推荐指数
1
解决办法
1万
查看次数

在不跳过其余的 try 子句的情况下,是否可以在 try/except 语句中发生异常?

假设以下代码:

try:
    code_a
    code_b
    code_c
except:
    pass
Run Code Online (Sandbox Code Playgroud)

如果在 中发生错误code_b,那么它将被 捕获except并且只会code_a运行。有没有办法确保code_c运行?

我想:

try: 
    code_a
except: 
    pass
try: 
    code_b
except: 
    pass
try: 
    code_c
except: 
    pass
Run Code Online (Sandbox Code Playgroud)

不是正确的方法。

python try-except

1
推荐指数
1
解决办法
104
查看次数

如何检查用户输入是否严格按字母顺序排列?

我目前正在研究一个项目的伪代码,突然想到,虽然我有一种方法可以检查用户输入是否是严格的数字,但我不知道如何检查输入是否是严格按字母顺序排列的。

例如:

def valueCheck_Int(question):

    while (True):
        try:
            return int(input(question))
        except:
            question = "That is not a valid integer, try again: "


def main():
    
    userInput = valueCheck_Int("Enter an integer: ")

    print(userInput)

main()
Run Code Online (Sandbox Code Playgroud)

这段代码检查用户的输入是否严格为数字,并且只会在用户输入整数之前中断循环。

有没有办法做到这一点,但字符串输入是按字母顺序排列的,根本没有数字?

python error-handling user-input try-except

1
推荐指数
1
解决办法
51
查看次数

如何从 JSON 执行许多变量赋值,如果键错误赋值 None 并在 python 中执行其余的所有

我正在尝试从 JSON 文件中获取值并将其存储在 python 字典中。

我想为我提供的键中可用的值和那些不可用的值分配值,我想存储为“无”

我尝试了以下,

try:
    dataDict['syn']= results['synonyms']
    dataDict['reactivity']= results['crossReactivity']
    dataDict['Temp']= results['storageTemp']
    dataDict['catNum']= results['catalogNum']
    dataDict['shipping']= results['shippingInstructions']
except KeyError as e:
    dataDict[e.args[0]] = "None"
sa = f"""
        synonyms: {dataDict['syn']}
        crossReactivity: {dataDict['reactivity']}
        storageTemp: {dataDict['Temp']}
        catalogNum: {dataDict['catNum']}
        shippingInstructions: {dataDict['shipping']}
        """
print (sa) 
Run Code Online (Sandbox Code Playgroud)

我得到以下输出,

synonyms: None
crossReactivity:
storageTemp:
catalogNum:
shippingInstructions:
Run Code Online (Sandbox Code Playgroud)

如果 JSON 文件中的“同义词”不可用,则将“无”分配给 dataDict['syn'],但其他语句将被忽略。

如何执行其余的任务,而不必在单独的 try 和 except 中编写每个和所有内容?

python python-3.x try-except

1
推荐指数
1
解决办法
34
查看次数

在函数内尝试除外 - 跳到函数末尾

我有一个按计划每分钟运行一次的函数。第一步是从 API 中提取数据。有时这有效,有时它超时。如果它有效,我想对数据做一堆事情然后保存它。如果它不起作用,我只想跳到函数的末尾而不做任何事情。所以这是它的工作原理:

def job():
   try:
      a = requests.get("API address that sometimes work and sometimes doesn't")
   except:
      print('connection error')
   #a bunch of code that transforms the data and then saves it
Run Code Online (Sandbox Code Playgroud)

这是调度程序:

schedule.every().minute.at(":01").do(job)

while 1:
    schedule.run_pending()
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

我可以通过将#a bunch of code线移到 try 中来实现我想要的,但是其他潜在的错误也将被捕获在“连接错误”中。

有没有办法让异常跳到函数的末尾?然后因为它在一分钟的调度程序上它只是稍后再试?

我知道它不是可重复的代码,但这很简单,没有必要。

python api try-except

1
推荐指数
1
解决办法
33
查看次数

有没有办法对装饰器函数执行 if-else / try- except ?

这个库 X 有两个版本:7 和 8。

在版本 7 中,调用装饰器的回调resultcallback()

在版本 8 中,回调被称为result_callback()

目前我有一个代码可以对 X 库的版本 7 执行类似的操作:

from x import x  # Some sort of decorator library.

@x.resultcallback()
def process_pipeline(func, **kwargs):
    with x.get_stream as fin:
        func(fin)
Run Code Online (Sandbox Code Playgroud)

我的用户只想依赖其中一个版本,但两个版本都无法仅容纳版本 7 或仅容纳版本 8。

有没有办法在装饰器中执行 if-else 操作?

我可以做到这一点,但它真的很难看,而且如果我必须做出一些更改,我认为维护同一功能的 2 个副本是不可持续的。

from x import x

if x.__version__.split('.')[0] == '7':
    @x.resultcallback()
    def process_pipeline(func, **kwargs):
        with x.get_stream as fin:
            func(fin)
elif x.__version__.split('.')[0] == '8':
    @x.result_callback()
    def process_pipeline(func, **kwargs):
        with x.get_stream as fin: …
Run Code Online (Sandbox Code Playgroud)

python decorator try-except

1
推荐指数
1
解决办法
44
查看次数

"尝试......除外"的效率

代码工作正常.我刚才有一个效率问题.在这段代码中,我使用" try... except"来传递会导致程序崩溃的错误.该错误是由IP地址无法访问引起的.正如我之前所说,代码完成了它的工作.我想知道这是否是最快的方式来查看IP是否可以访问并将其传递出去.如果找不到IP,它会停止30到45秒.堆积了几次这可能相当费时.

import win32net

def GetUsers( IP ):
    try:
        Users = win32net.NetGroupGetUsers(IP,'none',0),
    except:
        print IP + ': Was not found!'
    else:
        print IP + ': ' + Users
    return

F = open("C:\Users\*User*\Desktop\IP_List.txt")

for CurrentIP in F.readlines():
    GetUsers(CurrentIP.strip()),

F.close()
print 'DONE!'
Run Code Online (Sandbox Code Playgroud)

python ip error-handling performance try-except

0
推荐指数
1
解决办法
198
查看次数

Python - 尝试/除外,什么是好的,什么是错的?

我必须处理大量的尝试/除外.我对正确的做法表示怀疑.

选项1:

inst = Some(param1, param2)
try:
    is_valid = retry_func(partial(inst.some_other), max_retry=1)
except RetryException, e:
    SendMail.is_valid_problem(e)

if is_valid:
    print "continue to write your code"
    ...
    *** more code with try/except ***
    ...
Run Code Online (Sandbox Code Playgroud)

选项2:

inst = Some(param1, param2)
try:
    is_valid = retry_func(partial(inst.some_other), max_retry=1)
    if is_valid:
        print "continue to write your code"
        ...
        *** more code with try/except ***
        ...
except RetryException, e:
    SendMail.is_valid_problem(e)
Run Code Online (Sandbox Code Playgroud)

在选项1中,即使引发了异常,也会测试"is_valid",我不需要它.

在选项2中,我认为是正确的,但代码看起来像一个"回调地狱".

我应该选择什么选项哪个选项是正确的?

python try-except

0
推荐指数
1
解决办法
610
查看次数

Python中的Python计数项目

我想计算部分语音标签.到目前为止,我有一个存储在字典中的词性标记(用于德语),其中POS标记所在的键,以及出现次数的值.

当我统计时,我想将'NN'和'NE'概括为一个变量'nouns_in_text',因为它们都是名词.我成功地完成了这个.当我有一个输入文本,其中我有'NN'和'NE',在这种情况下我的代码正在工作,我得到正确的结果,意味着'NN'和'NE'的总和.

但问题是,当我有一个输入文本,例如只有'NN'而没有'NE'时,我得到一个KeyError.

我需要代码来查看输入文本中是否存在"NN"或"NE".如果有'NN'和'NE',那么总结它们.如果只有'NN',那么只返回'NN'的出现次数,如果只有'NE'则返回相同的值.如果既没有'NN'也没有'NE'返回0或"无".

我想要一个代码,它可以在以下描述的场景中适用于所有三个,而不会出现错误.

# First Scenario: NN and NE are in the Input-Text
myInput = {'NN': 3, 'NE': 1, 'ART': 1, 'KON': 1}

# Second Scenario: Only NN is in the Input-Text
#myInput = {'NN': 3, 'ART': 1, 'KON': 1}

# Third Scenario: Neither NN nor NE are in the Input-Text
#myInput = {'ART': 1, 'KON': 1}

def check_pos_tag(document):
    return document['NN'] + document['NE']

nouns_in_text = check_pos_tag(myInput)
print(nouns_in_text)

# Output = If NN and NE are in the input …
Run Code Online (Sandbox Code Playgroud)

python dictionary if-statement count try-except

0
推荐指数
1
解决办法
404
查看次数