Python 插座;进口;“不起作用”;从「;做怎么回事?
我刚刚开始使用python,并尝试使用它来执行一些基本的网络例程。 我有两段代码做同样的事情,一段正常,另一段不正常。使用来自套接字导入的Python 插座;进口;“不起作用”;从「;做怎么回事?,python,sockets,import,Python,Sockets,Import,我刚刚开始使用python,并尝试使用它来执行一些基本的网络例程。 我有两段代码做同样的事情,一段正常,另一段不正常。使用来自套接字导入的时*不会触发异常代码块。当我使用导入套接字时,我确实触发了异常代码块。我想用第二种方法来编码!有人看到我的代码或我对语言或模块使用的理解有任何问题吗?为什么第二种方法不起作用 以下是工作代码: from socket import * try: connSkt = socket(AF_INET, SOCK_STREAM) except: pr
时*
不会触发异常代码块。当我使用导入套接字时,我确实触发了异常代码块。我想用第二种方法来编码!有人看到我的代码或我对语言或模块使用的理解有任何问题吗?为什么第二种方法不起作用
以下是工作代码:
from socket import *
try:
connSkt = socket(AF_INET, SOCK_STREAM)
except:
print "[-] Exception occurred!"
import socket
try:
connSkt = socket.socket(AF_INET, SOCK_STREAM)
except:
print "[-] Exception occured!"
以下是非工作代码:
from socket import *
try:
connSkt = socket(AF_INET, SOCK_STREAM)
except:
print "[-] Exception occurred!"
import socket
try:
connSkt = socket.socket(AF_INET, SOCK_STREAM)
except:
print "[-] Exception occured!"
AF_INET
和SOCK_STREAM
是socket
模块的一部分,您需要为第二个示例指定该模块:
import socket
try:
connSkt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except Exception:
print "[-] Exception occurred!"
AF_INET
和SOCK_STREAM
是socket
模块的一部分,您需要为第二个示例指定该模块:
import socket
try:
connSkt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except Exception:
print "[-] Exception occurred!"
正如dano所说:在第二个示例中,您需要使用socket.AF_INET和socket.SOCK_流
import socket
创建名为socket的模块对象,其中包括AF_INET和SOCK_STREAM
from socket import *
将socket中的所有名称(包括AF_INET和SOCK_STREAM)导入当前命名空间。如dano所说:在第二个示例中,您需要使用socket.AF_INET和socket.SOCK_STREAM
import socket
创建名为socket的模块对象,其中包括AF_INET和SOCK_STREAM
from socket import *
将套接字中的所有名称(包括AF_INET和SOCK_STREAM)导入当前命名空间。在第二个示例中,您需要使用
socket.AF_INET
和socket.SOCK_STREAM
。如果你没有完全接受所有的异常,那么这对你来说可能是显而易见的。不要那样做!成功了。如果你真的想捕获所有异常并将它们转换为输出消息,至少要输出异常本身,这样你就知道发生了什么!例如,异常除外,如e:print“[-]异常发生:{!r}!”。格式(e)
。然后,您将知道出错的是namererror(“name'AF\u INET'not defined”)
,这将使调试变得更加容易,而不仅仅是知道出错了。(但在这种情况下,只需删除尝试/例外,并让完整的异常和回溯打印出来;让它工作,然后找出您的日志记录格式,这会简单得多。)永远不要使用单个例外:
,而是使用例外:
。将来将使用您的代码示例!在第二个示例中,您需要使用socket.AF_INET
和socket.SOCK_STREAM
。如果你没有完全接受所有的异常,那么这对你来说可能是显而易见的。不要那样做!成功了。如果你真的想捕获所有异常并将它们转换为输出消息,至少要输出异常本身,这样你就知道发生了什么!例如,异常除外,如e:print“[-]异常发生:{!r}!”。格式(e)
。然后,您将知道出错的是namererror(“name'AF\u INET'not defined”)
,这将使调试变得更加容易,而不仅仅是知道出错了。(但在这种情况下,只需删除尝试/例外,并让完整的异常和回溯打印出来;让它工作,然后找出您的日志记录格式,这会简单得多。)永远不要使用单个例外:
,而是使用例外:
。将来将使用您的代码示例!。。。但是,如果可能的话,应该避免通配符导入。它们通常会导入您不需要或永远不会使用的内容,如果未设置所有内容,则可以导入内部内容,并使linter和调试器更难找到未使用/丢失的符号。。。。但是,如果可能的话,应该避免通配符导入。它们通常会导入您不需要或永远不会使用的东西,如果未设置所有内容,则可以导入内部内容,并使linter和调试器更难找到未使用/丢失的符号。