相关疑难解决方法(0)

出现异常时如何强制爬出

我用Scrapy编写了一个爬虫。

我正在将数据写入数据库的管道中有一个函数。我使用日志记录模块记录运行时日志。

我发现当我的字符串有中文时logging.error()会抛出异常。但是搜寻器一直在运行!

我知道这是一个小错误,但是如果存在严重的异常,并且搜寻器继续运行,我会错过它。

我的问题是:是否存在可以Scrapy在出现异常时强制停止的设置?

scrapy web-scraping

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

当用户提供某个关键字作为输入时结束函数

当用户在输入中键入特定关键字(例如“关闭”)而不必在每个输入中添加必要的代码时,如何结束函数?基本上,当用户在以下任何输入中的任何位置键入“关闭”一词时,我希望该功能完全停止。我创建了一个函数(见代码底部)并尝试在我的代码中放置/调用它,但不确定将它放在哪里,或者我是否可以用一个函数来做到这一点?如果没有,我怎样才能做到这一点?

  def order_coffee():

    drink = input("What would you like? (espresso/latte/cappuccino): ")

    user_owes = int(0)

    if drink == "espresso":
        user_owes = round(1.5, 2)
    elif drink == "latte":
        user_owes = round(2.5, 2)
    elif drink == "cappuccino":
        user_owes = round(3.0, 2)

    print(f"Please insert coins, you owe ${user_owes}.")
    quarters = (int(input("How many quarters?: ")) * .25)
    dimes = (int(input("How many dimes?: ")) * .1)
    nickels = (int(input("How many nickels?: ")) * .05)
    pennies = (int(input("How many pennies?: ")) * .01)

    user_paid = …
Run Code Online (Sandbox Code Playgroud)

python input output

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

我如何在python中生成自定义错误消息

在我正在制作的python程序中,我希望它只采用整数,如果它得到一个字符串,则说"系统中存在错误".用户不会理解,而不是篡改敏感的信息

python python-3.x

2
推荐指数
4
解决办法
3万
查看次数

Python SMTP 错误代码处理

我对此进行了相当多的搜索,但找不到任何令人满意的结果。

我一直在尝试编写一个 python 程序来监听电子邮件退回报告,并根据退回的原因以不同的时间间隔重新发送它们。

import smtplib
from smtplib import *

sender = 'foo@bar.com'
receivers = ['42@life.com']

message = """From: From Arthur <foo@bar.com>
To: To Deep Thought <42@life.com>
Subject: SMTP e-mail test
This is a test e-mail message.
"""

try:
  smtpObj = smtplib.SMTP('smtp.gmail.com',587)
  smtpObj.starttls()
  smtpObj.login(sender,'foo@bar.com')
  smtpObj.sendmail(sender, receivers, message)
  print "Successfully sent email"
except SMTPResponseException:
  error_code = SMTPResponseException.smtp_code
  error_message = SMTPResponseException.smtp_error
  print "Error code:"+error_code
  print "Message:"+error_message
  if (error_code==422):
    print "Recipient Mailbox Full"
  elif(error_code==431):
    print "Server out of space"
  elif(error_code==447):
    print "Timeout. Try …
Run Code Online (Sandbox Code Playgroud)

python smtp error-code smtplib python-2.7

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

Python用户定义的异常,用于处理特定的OSError代码

我想处理特定的OSError代码,如下所示:

try:
    os.scandir()
except OSPermissionError as error:  
    # Only catch errno.EACCES, errno.EPERM
    handle_permission_error()
except OSFileNotFoundError as error: 
    # Only catch errno.ENOENT
    handle_FileNotFoundError_error()
Run Code Online (Sandbox Code Playgroud)

这可以在python中完成吗?

python exception user-defined

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

如何使用 Django 进行手动提交

我想执行一个事务来删除一些值,然后在数据库中计数,如果结果<1,则回滚,我尝试了以下代码:

@login_required
@csrf_exempt
@transaction.atomic
def update_user_groups(request):
    if request.POST:
        userId = request.POST['userId']
        groups = request.POST.getlist('groups[]')
        result = None
        with transaction.atomic():
            try:
                GroupsUsers.objects.filter(user_id=int(userId)).delete()
                for group in groups:
                    group_user = GroupsUsers()
                    group_user.user_id = userId
                    group_user.group_id = group
                    group_user.save()
                count = UsersInAdmin.objects.all().count()
                if count < 1:
                    transaction.commit()
                else:
                    transaction.rollback()
            except Exception, e:
                result = e
    return JsonResponse(result, safe=False)
Run Code Online (Sandbox Code Playgroud)

谢谢,

django python-2.7

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

在python dict.get()中引发异常

实际上,我已经知道我想做的事情有点奇怪,但是我认为它适合我的代码,所以我问:

有没有办法做这样的事情:

foo = { 'a':1, 'b':2, 'c':3 }
bar = { 'd':4, 'f':5, 'g':6 }

foo.get('h', bar.get('h'))
Run Code Online (Sandbox Code Playgroud)

引发异常而不是None,以防dict.get()失败?

foo.get('h', bar.get('h', raise)) 将提高 SyntaxError

foo.get('h', bar.get('h', Exception)) 只会回来 Exception

现在,我只是在和我一起工作,if not foo.get('h', bar.get('h')): raise Exception但是如果有直接提高筹码的方法,dict.get()我将非常高兴。

谢谢

python dictionary exception-handling

0
推荐指数
2
解决办法
511
查看次数

Python异常基类与特定异常

我只是想知道,在使用try时除外,使用Base类"Except"和使用特定异常(如"ImportError"或"IOError"或任何其他特定异常)之间的区别是什么.一个和另一个之间是否存在利弊?

python exception-handling exception

-2
推荐指数
1
解决办法
77
查看次数