小编two*_*e88的帖子

如何将套接字绑定到一个可用端口?

在作为客户端连接之前,我需要将我的套接字绑定到特定的本地IP.

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("192.168.1.2", 33333))
s.connect(("google.com", 80))
s.send("test")
Run Code Online (Sandbox Code Playgroud)

我知道如何绑定到特定的本地IP地址,但我不知道指定哪个端口.我不能使用随机端口,因为它可能已经在使用中.有没有办法绑定到任何可用的端口?

python sockets bind

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

Python正则表达式大写unicode字

我需要找到许多语言的缩写文本.目前的正则表达式是:

import regex as re
pattern = re.compile('(?:[\w]\.)+', re.UNICODE | re.MULTILINE | re.DOTALL | re.VERSION1)
pattern.findall("U.S.A. u.s.a.")
Run Code Online (Sandbox Code Playgroud)

我在结果中不需要美国,我只需要大写文本.除了英语之外,[AZ]不会使用任何语言.

python regex

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

Strtok segfault

可能重复:
strtok给出分段错误

为什么我使用此代码获得段错误?

void test(char *data)
{
    char *pch;
    pch = strtok(data, " ,.-"); // segfault
    while (pch != NULL)
    {
        printf("%s\n", pch);
        pch = strtok(NULL, " ,.-");
    }

    return NULL;
}

char *data = "- This, a sample string.";
test(data);
Run Code Online (Sandbox Code Playgroud)

c

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

IP cidr匹配功能

我需要找出来,是ip属于ip mask.例如:

ip = 192.168.0.1 mask = 192.168.0.1/24.

我找到了将ip转换为mask的函数:

inet_cidrtoaddr(int cidr, struct in_addr *addr)
{
        int ocets;

        if (cidr < 0 || cidr > 32) {
                errno = EINVAL;
                return -1;
        }
        ocets = (cidr + 7) / 8;

        addr->s_addr = 0;
        if (ocets > 0) {
                memset(&addr->s_addr, 255, (size_t)ocets - 1);
                memset((unsigned char *)&addr->s_addr + (ocets - 1),
                       (256 - (1 << (32 - cidr) % 8)), 1);
        }

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

我如何比较ip和cidr范围?

c cidr

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

Gevent猴子unatch

我正在做很多步骤.其中之一是使用gevent + monkey补丁

from gevent import monkey; monkey.patch_all()
Run Code Online (Sandbox Code Playgroud)

一切都很好.但是我可以在使用它之后将其取消吗?我想返回我的默认套接字函数.

python monkeypatching gevent

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

Python正则表达式排除了Underscore

我需要在UNICODE中找到所有两个字符的sumbol,除了下划线.目前的解决方案是:

pattern = re.compile(ur'(?:\s*)(\w{2})(?:\s*)', re.UNICODE | re.MULTILINE | re.DOTALL)
print pattern.findall('a b c ab cd vs sd a a_ _r')
['ab', 'cd', 'vs', 'sd', 'a_', '_r']
Run Code Online (Sandbox Code Playgroud)

我需要从正则表达式中排除下划线_,因此找不到a_ AND _r.问题是,我的角色可以是任何语言.所以我不能像这样使用正则表达式:[^ a-zA-Z].例如,俄语:

print pattern.findall(u'?_')
Run Code Online (Sandbox Code Playgroud)

python regex

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

Flask Admin不显示所有字段

我有这样的模型:

class User(db.Model):
    __tablename__ = 'users'
    __table_args__ = {'mysql_engine' : 'InnoDB', 'mysql_charset' : 'utf8'}
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)
    _password = db.Column('password', db.String(80))

    def __init__(self, username = None, email = None, password = None):
        self.username = username
        self.email = email
        self._set_password(password)

    def _set_password(self, password):
        self._password = generate_password_hash(password)

    def _get_password(self):
        return self._password

    def check_password(self, password):
        return check_password_hash(self._password, password)

    password = db.synonym("_password", descriptor=property(_get_password, _set_password))

    def __repr__(self):
        return '<User %r>' % self.username
Run Code Online (Sandbox Code Playgroud)

我有ModelView:

class UserAdmin(sqlamodel.ModelView):
    searchable_columns …
Run Code Online (Sandbox Code Playgroud)

flask-extensions flask-admin

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

C-ares获得ns记录

我正在使用c-ares进行DNS查询.问题是,我不知道如何获得NS值.我没有找到任何示例和文档不适合我:(

ares_parse_ns_reply的手册提供功能描述.我已经创建了我的频道并弄清楚如何进行gethostbyname查询:

    // ...
    status = ares_init_options(&channel, &options, optmask);
    if (status != ARES_SUCCESS) {
        printf("ares_init_options: %s\n", ares_strerror(status));
        return EXIT_FAILURE;
    }
    // ...
    ares_gethostbyname(channel, "stackoverflow.com", AF_INET, callback, NULL);
    // ...
Run Code Online (Sandbox Code Playgroud)

但是我接下来要做什么来获得MX/NS/AAAA记录?

c dns c-ares

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

在Tornado协程中引发异常或返回gen.Return对象

我们有一个Python 2项目,我们积极使用协同程序.我们找不到关于协程内部异常处理的任何指南.

例如,在这里龙卷风的主要开发人员提到coroutines should never raise an exception,但目前尚不清楚为什么.看起来这种方法可以在Tornado.web本身中使用并大量使用:

https://github.com/tornadoweb/tornado/blob/master/demos/blog/blog.py#L180

class AuthCreateHandler(BaseHandler):
    def get(self):
        self.render("create_author.html")

    @gen.coroutine
    def post(self):
        if self.any_author_exists():
            raise tornado.web.HTTPError(400, "author already created")
        hashed_password = yield executor.submit(
            bcrypt.hashpw, tornado.escape.utf8(self.get_argument("password")),
            bcrypt.gensalt())
Run Code Online (Sandbox Code Playgroud)

tornado.web.HTTPError只是扩展了基本的Exception类.另外,这里的讨论https://github.com/tornadoweb/tornado/issues/759#issuecomment-91817197建议在协程内提高异常是合适的.

同样在这里,活跃的龙卷风贡献者建议提高例外是好的:

class PostHandler(tornado.web.RequestHandler):
    @gen.coroutine
    def get(self, slug):
        post = yield db.posts.find_one({'slug': slug})
        if not post:
            raise tornado.web.HTTPError(404)

        self.render('post.html', post=post)
Run Code Online (Sandbox Code Playgroud)

在Tornado协同程序中提出异常是否有任何缺点,或者我们应该raise gen.Return(exception_object)吗?

python tornado

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

熊猫图更改 y 轴

我有看起来像这样的 DataFrame

在此处输入图片说明

我想绘制它:

df2[['width', 'height', 'depth']].head(20).plot.bar(figsize=(8, 8), fontsize=16)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

效果很好,但我需要增加 Y 轴的点数。我想添加 2400、1900 等数字,我该怎么做?为什么 Y 轴上只有 6 个点?

python pandas

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