小编bon*_*ing的帖子

为什么Python的string.format pad不能用"\ x00"?

我想填充一个带有空字符的字符串("\ x00").我知道有很多方法可以做到这一点,所以请不要用其他方式回答.我想知道的是:为什么Python的string.format()函数不允许使用空值填充?

测试用例:

>>> "{0:\x01<10}".format("bbb")
'bbb\x01\x01\x01\x01\x01\x01\x01'
Run Code Online (Sandbox Code Playgroud)

这表明十六进制转义字符通常起作用.

>>> "{0:\x00<10}".format("bbb")
'bbb       '
Run Code Online (Sandbox Code Playgroud)

但是"\ x00"变成了一个空格("\ x20").

>>> "{0:{1}<10}".format("bbb","\x00")
'bbb       '
>>> "{0:{1}<10}".format("bbb",chr(0))
'bbb       '
Run Code Online (Sandbox Code Playgroud)

甚至尝试了其他几种方法.

>>> "bbb" + "\x00" * 7
'bbb\x00\x00\x00\x00\x00\x00\x00'
Run Code Online (Sandbox Code Playgroud)

这有效,但不使用 string.format

>>> spaces = "{0: <10}".format("bbb")
>>> nulls  = "{0:\x00<10}".format("bbb")
>>> spaces == nulls
True
Run Code Online (Sandbox Code Playgroud)

Python显然代替了spaces(chr(0x20))而不是nulls(chr(0x00)).

python string-formatting

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

Windows 套接字:如何在非阻塞 connect() 上立即检测 TCP RST?

我们的软件(Nmap 端口扫描器)需要快速确定非阻塞 TCP 套接字的状态connect()。我们select()用来监控很多套接字,Windows 擅长在一个成功时通知我们。但是如果端口关闭并且目标发送 TCP RST,Windows 会在通知 之前继续尝试几次exceptfds,并且套接字错误WSAECONNREFUSED如预期。不过,我们的应用程序有自己的超时,并且通常会在 Windows 放弃之前将连接标记为超时。我们希望尽可能接近 Linux 的行为,即ECONNREFUSED在收到第一个 RST 后立即通知。

我们尝试使用TCP_MAXRT套接字选项,这可以立即select()向我们发出信号,但结果(对于关闭的端口)总是WSAETIMEDOUT,这使得无法区分关闭(RST)和过滤/防火墙(网络超时),这让我们回到原来的问题。确定这种区别是我们应用程序的核心功能。

那么在 Windows 上找出非阻塞套接字connect()是否已收到连接重置的最佳方法是什么?

编辑添加:这里的一个核心问题是微软关于SO_ERROR套接字选项的文档中的这一行:“这个每套接字错误代码并不总是立即设置。” 如果立即设置,我们可以在连接超时之前检查它。

windows select tcp winsock winsock2

6
推荐指数
0
解决办法
420
查看次数

Perl的`study`是否有Python等价物?

从Perl的文档:

study需要额外的时间来研究SCALAR($ _,如果未指定),期望在下一次修改之前对字符串进行许多模式匹配.这可能会也可能不会节省时间,具体取决于您要搜索的模式的性质和数量以及要搜索的字符串中的字符频率分布;

我正在尝试加速一些正在用Python编写的正则表达式驱动的解析,我记得Perl的这个技巧.我意识到我必须进行基准测试以确定是否存在加速,但我无法在Python中找到等效方法.

python regex optimization perl

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

vim:&lt;静音&gt; nmap

在vim中我有这个nmap

nmap <silent> ,mu : marks ABCDEFGHIJKLMNOPQRSTUVWXYZ<CR>
Run Code Online (Sandbox Code Playgroud)

如果我没有较高分数并尝试,mu得到

E283: No marks matching "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Run Code Online (Sandbox Code Playgroud)

为什么不显示错误输出?

vim silent

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

Perl,帮助访问散列哈希值中的值

我有一个散列哈希,我需要访问一个值,如果相同的子哈希值匹配字符串.

这是我试图访问的哈希的一部分:

{
  'ACCOUNTINFO' => {
                   'ENTRY' => [
                              {
                                'Name' => 'fields_12'
                              },
                              {
                                'Name' => 'fields_24'
                              },
                              {
                                'content' => 'Piso 12',
                                'Name' => 'TAG'
                              },
                              {
                                'Name' => 'fields_23'
                              },
                              ]
                   }
}
Run Code Online (Sandbox Code Playgroud)

如果Name是"Tag",我需要"content"的值.

我可以访问姓名:

$name = $refia->{ACCOUNTINFO}{ENTRY}{Name};
Run Code Online (Sandbox Code Playgroud)

但我找不到任何方式来在需要时访问内容.

我得到了这个:

if ($refia->{ACCOUNTINFO}{ENTRY}{Name} eq "TAG") {
    ###
    }
Run Code Online (Sandbox Code Playgroud)

谢谢

perl hash

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

如何在linux上打开一个端口(Debian jessie)

我有一个进程,我正在我的本地机器上运行,它正在侦听TCP端口9000.我想在我的网络的另一台计算机上使用.这是我的配置:

我想在跑步时看到它,nmap 10.18.12.12但我不知道怎么做.

nmap localhost

Starting Nmap 6.47 ( http://nmap.org ) at 2015-08-20 13:49 ART
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00037s latency).
Other addresses for localhost (not scanned): 127.0.0.1
Not shown: 987 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
25/tcp   open  smtp
80/tcp   open  http
111/tcp  open  rpcbind
443/tcp  open  https
631/tcp  open  ipp
3306/tcp open  mysql
5432/tcp open  postgresql
8000/tcp open  http-alt
**9000/tcp open  cslistener**
9001/tcp open  tor-orport
9999/tcp …

linux port iptables nmap

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

python django:如何根据传递给模板的参数确定div是否显示或隐藏

我需要根据从django views.py传入的参数设置div以显示或隐藏,但是我无法使其工作。我的代码如下:

在身体里:

{% if report_type == "detail" %}
    visibility("detail");
{% endif %}
Run Code Online (Sandbox Code Playgroud)

在javascript中:

<script type="text/javascript">
    function visibility(reportType) {
        console.log(reportType);
        if(reportType == "detail") {
            $('#executive_summary').style.display = 'none';
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

但是,上面的代码不起作用。有人可以给我一些建议吗?谢谢。

javascript django jquery

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