小编ffl*_*ing的帖子

Python:尝试为多种错误类型引发多用途异常

我在python中使用urllib和urllib2并使用它们从url中检索图像.

使用类似的东西:

try:
    buffer=urllib2.url_open(urllib2.Request(url))
    f.write(buffer)
    f.close
except (Errors that could occur):    #Network Errors(?)
    print "Failed to retrieve "+url
    pass

现在经常发生的事情是,当通过普通网络浏览器使用网站时,图像不会加载/损坏,这可能是因为服务器负载过高或者因为图像不存在或服务器无法检索.

无论原因是什么,图像都不会加载,并且在使用脚本时也可能/可能发生类似的情况.因为我不知道它可能会出现什么错误,所以我该如何处理呢?

我想在urllib2中提到所有可能的错误,在except语句中的urllib库可能有点矫枉过正,所以我需要一个更好的方法.

(我也可能需要/必须处理损坏的Wi-Fi,无法访问的服务器等,有时会出现更多错误)

python try-catch urllib urllib2

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

Python重装模块

我正在module使用python的unittest框架为python模块编写单元测试.

该模块在加载时使用json文件进行一些"预处理",因此它具有以下内容: module.info['xyz']可以访问和使用它.

在为此编写测试时,我想在每次测试之前重新加载模块,以便module.info在开始当前测试之前,对于每个测试,字典的旧键不再存在.

现在我有一个reload(module)setUp()但这似乎并没有做的伎俩.我有罗纳尔多,也很想通过引进旧密钥test_A在其他测试,如test_Btest_C那些后执行.

我想知道是否有办法实现我想要实现的目标,或者您是否可以指出我的文档说它无法完成.

python testing

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

Python的__file__实际上做了什么?

我一直认为__file__变量总是给你当前的文件名,但这似乎并不完全是它的作用.因为如果我认为这是真的,我一直面临着一个错误.

有人告诉我"这__file__是指搜索的最后一个模块"这似乎更准确,但我想知道__file__应该做什么.

我找不到Python文档中提到的任何具体内容.很多地方似乎都提到它,但不是很清楚.

http://docs.python.org/2/c-api/import.html?highlight=__file__

http://docs.python.org/2/c-api/module.html?highlight=__file__

python

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

具有一流功能的语言是否必然允许关闭?

我理解闭包的广义概念(函数在定义时与环境快照一起存储),作为一等公民的函数意味着函数可以像语言中的任何其他数据类型一样传递和返回.

有趣的是,我所使用的所有语言都具有一等公民的功能,例如Python,Javascript,Scheme似乎总是有闭包.

事实上,传递和返回函数的闭包是实现函数作为语言的一等公民的一种方式,但我不确定是否能够编写它们是函数作为一等公民的直接和不可避免的后果.

提出更具体的条款:

你能提供一个实际的例子,其拥有一流的功能的语言,但它是不是可以写倒闭?

javascript python functional-programming first-class-functions

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

具有列表理解的不同模式

我面临一个特殊的问题,最近我觉得需要生成某种类型的列表理解。

例如:

[ re.search('xyz', l).group(0) for l in my_list if re.search('xyz', l) ]
Run Code Online (Sandbox Code Playgroud)

现在,敏锐的读者可能已经观察到这个列表理解进行了正则表达式匹配两次。

我想消除这种“额外”开销,从而失去列表理解的优雅性。以前有人遇到过这样的问题吗?如果是这样,他们是如何解决这个问题的?

一般来说,我有一个f()应用于x列表中的值/对象的函数,现在我希望f(x).b当且仅当f(x).a满足某些条件时才将其包含在我的列表中。

我知道

empty_list = []
for l in my_list:
    match = re.search('xyz', l)
    if match:
        empty_list.append(match.group(0))
Run Code Online (Sandbox Code Playgroud)

或者更一般地说:

empty_list = []
for x in my_list:
    val = f(x)
    if val.a == condition:
        empty_list.append(val.b)
Run Code Online (Sandbox Code Playgroud)

是一个可能的解决方案,但这似乎太冗长了,我确信有一种更“Pythonic”的方法可以做到这一点。

python list-comprehension

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

无法使用自定义网络启动GKE(Google容器引擎)群集

我正在尝试使用"自定义"类型网络启动GKE群集,而不是"自动"类型网络.

我使用以下命令启动我的集群:

$ gcloud container clusters create --cluster-ipv4-cidr=10.0.0.0/14 --network=ttest --subnetwork=ttest --num-nodes=1 jt
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Creating cluster jt...done.
ERROR: (gcloud.container.clusters.create) Operation [<Operation
 name: u'operation-1467037655793-e319dc5e'
 operationType: OperationTypeValueValuesEnum(CREATE_CLUSTER, 1)
 selfLink: u'https://container.googleapis.com/v1/projects/TRUNCATED/zones/us-east1-b/operations/operation-1467037655793-e319dc5e'
 status: StatusValueValuesEnum(DONE, 3)
 statusMessage: u'Requested CIDR 10.0.0.0/14 is not available in network "ttest".'
 targetLink: u'https://container.googleapis.com/v1/projects/TRUNCATED/zones/us-east1-b/clusters/jt'
 zone: u'us-east1-b'>] finished with error: Requested CIDR 10.0.0.0/14 is not available in network "ttest".
Run Code Online (Sandbox Code Playgroud)

它似乎想要一个具有/14地址范围的网络或子网,因此该命令应该理想地工作,但事实并非如此.

这很奇怪,因为这是我的网络的样子:

ttest网络:

$ gcloud compute networks describe ttest

autoCreateSubnetworks: false
creationTimestamp: '2016-06-27T07:25:03.691-07:00'
id: '5404409453117999568'
kind: compute#network
name: ttest
selfLink: …
Run Code Online (Sandbox Code Playgroud)

networking google-compute-engine google-cloud-platform kubernetes google-kubernetes-engine

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

绑定失败:无法分配请求的地址

我正在尝试编写一个侦听我机器上端口的C程序.我遇到了一个奇怪的错误.

每当我尝试将套接字绑定到固定的ip(127.0.0.1或者我的实际IP)时,我都会收到"bind failed: Cannot assign requested address"错误.但是,当我将INADDR_ANY绑定作为要绑定的地址传递给bind时,它可以正常工作.

这是我拥有的唯一两个IP,所以不能因为我可用的其他IP地址而使0.0.0.0正常工作.

这是代码:

#include<sys/types.h>
#include<stdio.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<errno.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    int port = 1234;    /* port number */
    int rqst;       /* socket accepting the request */
    socklen_t alen;       /* length of address structure */
    struct sockaddr_in my_addr;    /* address of this service */
    struct sockaddr_in client_addr;  /* client's address */
    int sockoptval = 1;

    int svc;


    /* create a TCP/IP socket */
    if ((svc = …
Run Code Online (Sandbox Code Playgroud)

c sockets

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

无法在轨道上安装红宝石

我越来越

ERROR:  While executing gem ... (NameError) uninitialized constant Gem::RemoteFetcher::OpenSSL

当我试图跑

# gem install rails
我已经有了

  • Ruby v1.8.7
  • Gem(rubygems.nonarch)v1.7.2

安装.

任何想法我应该做什么?


sudo gem install rails现在跑步给了我:

ERROR:  Error installing rails:
    ERROR: Failed to build gem native extension.

        /usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/ruby.h


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/json-1.7.4 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/json-1.7.4/ext/json/ext/generator/gem_make.out


通过YUM安装的所有东西

运行Fedora 15

rubygems ruby-on-rails fedora

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

矩阵的转置

我试图在python中找到矩阵的转置而不实际使用矩阵的大小.

我需要使用列表推导来为[范围(n)中的i做[[row [i] for row in test]],其中test是一个nxn矩阵而不实际使用n.

python list-comprehension matrix

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

Mac OS上的Python ioctl错误

我正在尝试在Mac上运行以下功能,它正在投掷

struct.pack('iL', bytes, names.buffer_info()[0])
IOError: [Errno 102] Operation not supported on socket
Run Code Online (Sandbox Code Playgroud)

它在linux上运行得很好.谁能告诉我发生了什么事?


码:

def _get_interface_list():
max_iface = 32  # Maximum number of interfaces(Aribtrary)
bytes = max_iface * 32
is_32bit = (8 * struct.calcsize("P")) == 32  # Set Architecture
struct_size = 32 if is_32bit else 40

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
names = array.array('B', '\0' * bytes)
outbytes = struct.unpack('iL', fcntl.ioctl(
    s.fileno(),
    0x8912,  # SIOCGIFCONF
    struct.pack('iL', bytes, names.buffer_info()[0])
))[0]
namestr = names.tostring()
return namestr
Run Code Online (Sandbox Code Playgroud)

python sockets macos ioctl system-calls

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

Globbing和Regex

我遇到了以下问题:

Does filename “globbing” provide the expressive power of standard regular 
expressions? Explain 

.

问题是,我知道什么是globbing,我知道正则表达式.但这种表现力是什么?我应该在什么基础上回答这个问题?我知道在globbing和regex中,"?" 和"*"结构的使用方式不同.我应该只提一下它们的用法差异吗?在维基百科中,正则表达式的表达能力是根据形式语言和自动机来给出的.解决方案是否复杂?提前致谢!

regex unix bash glob

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

在execl中使用grep和文件描述符

我正在尝试执行以下操作:

 execl("/bin/grep","grep","print",fd,NULL);
Run Code Online (Sandbox Code Playgroud)

其中fd是文件描述符.所以基本上这应该是fd指向的文件中的"print".虽然我没有编译错误/警告但它似乎不起作用.当我给出一个文件名"Something.txt"而不是fd

有人可以告诉我为什么这不起作用?(我知道execl只需要,const char arg*但正如我所说的没有编译错误/警告).

c grep file-descriptor exec unistd.h

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

奇怪的seg故障错误,gdb是无益的

我有一个小程序试图模拟读取(非标准)数据包标头并进行处理.

当我运行程序时,我得到一个奇怪的seg错误,在使用gdb进行分析时,我看到代码完全执行,然后给我一个" 0x00000000 in ?? ()".

我之前从未见过这种错误,也没有任何关于可能导致错误的线索.

我将代码编译为 gcc -g header.c -lcrypto -lssl

这是代码

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include"hash_list.c"

void process(unsigned char header[48]);

int main()
{

    unsigned char header[48];
    unsigned short int responseCode_Fail = 255;
    unsigned short int responseCode_Pass = 0;
    unsigned short int packlen = 65000;
    long long int packetnumber = 2345678;

    memset(&header, 0, 96);
    strcpy(header,"FILELST");
    memcpy(&header[8], &responseCode_Fail, sizeof(responseCode_Fail));
    memcpy(&header[10], &packlen, sizeof(packlen));
    memcpy(&header[16], &packetnumber, sizeof(packetnumber));

    unsigned char result[MD5_DIGEST_LENGTH];
    calcmd5("sample.txt", result);
    memcpy(&header[32], &result, sizeof(result));

    process(header);

    return 0;
} …
Run Code Online (Sandbox Code Playgroud)

c gdb segmentation-fault

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