小编Mar*_*kus的帖子

python非特权ICMP

在尝试从python中找出ping(ICMP)的最佳方法时,我遇到了以下问题:

答案通常归结为"使用具有root权限的第三方模块"或"使用系统的ping命令并解析输出".在本机方法中,icmplibM. Cowles以及J. Diemer的ping.py明确提到了root权限的需要,scapy 手册也是如此.

所以从那个方面来看,原本发送没有特权的ICMP ping似乎是不可能的.系统ping命令确实以某种方式进行管理,但其手册页并未阐明如何操作.另一方面,icmp手册页似乎表明它是可能的:

Non-privileged ICMP
     ICMP sockets can be opened with the SOCK_DGRAM socket type without
     requiring root privileges. The synopsis is the following:

     socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP)

     Datagram oriented ICMP sockets offer a subset of the functionality avail-
     able to raw ICMP sockets. Only IMCP request messages of the following
     types can be sent: ICMP_ECHO, ICMP_TSTAMP or ICMP_MASKREQ.

所以看起来,至少根据icmp,它是允许的.那么为什么所有的python工具都无法做到这一点呢?python工具是否过于笼统,并期望特权套接字上的任何工作都具有特权?是否有可能在C中编写ping函数,可以在没有root权限的情况下ping,并用此扩展python?有没有人这样做过?我只是误解了这个问题吗?

python ping icmp

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

Mac 10.6 Universal Binary scipy:找不到cephes/specfun"_aswfa_"符号

当作为I386/x86_64的通用二进制编译,而在我的64位10.6.2 MacPro1,1执行我不能得到SciPy的32位模式下运行.

我的python设置

这个答案的帮助下,我构建了一个32/64位的python 2.6.4的intel通用二进制文件,目的是使用arch命令在架构之间进行选择.(我设法使用lipo制作了一些我想要的库的通用二进制文件.)一切正常.然后我根据hyperjeff的文章中的说明安装了scipy ,只是使用了更新的numpy(1.4.0)并且在安装scipy时跳过了关于简单地移动numpy的一点.

现在,除了scipy之外的所有东西似乎都可以正常工作,我确实可以使用arch -i386 python和选择32位和64位模式arch -x86_64 python.

错误

Scipy以32位模式抱怨:

$ arch -x86_64 python -c "import scipy.interpolate; print 'success'"
success
$ arch -i386 python -c "import scipy.interpolate; print 'success'"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/interpolate/__init__.py", line 7, in <module>
    from interpolate import *
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/interpolate/interpolate.py", line 13, in <module>
    import scipy.special as spec
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/special/__init__.py", line 8, in <module>
    from …
Run Code Online (Sandbox Code Playgroud)

python architecture scipy osx-snow-leopard universal-binary

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

关于python中字符串实例唯一性的问题

我试图弄清楚哪些整数python只实例化一次(看起来是-6到256),并且在这个过程中偶然发现了一些字符串行为,我无法看到模式.有时,以不同方式创建的相等字符串共享相同的字符串id,有时不是.这段代码:

A = "10000"
B = "10000"
C = "100" + "00"
D = "%i"%10000
E = str(10000)
F = str(10000)
G = str(100) + "00"
H = "0".join(("10","00"))

for obj in (A,B,C,D,E,F,G,H):
    print obj, id(obj), obj is A
Run Code Online (Sandbox Code Playgroud)

打印:

10000 4959776 True
10000 4959776 True
10000 4959776 True
10000 4959776 True
10000 4959456 False
10000 4959488 False
10000 4959520 False
10000 4959680 False

我甚至没有看到模式 - 除了前四个没有显式函数调用的事实 - 但肯定不会是它,因为+例如C中的" "意味着要添加的函数调用.我特别不明白为什么C和G是不同的,因为这意味着加法的组成部分的ID比结果更重要.

那么,AD经历的特殊待遇是什么,使它们成为同一个例子?

python string instance uniqueidentifier

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

在matplotlib中的方形绘图区域上绘制对数线性图

我想在matplotlib的方形绘图区域绘制一个对数y轴和一个线性x轴的图.我可以在正方形上绘制线性线性图和对数图,但是我使用的方法Axes.set_aspect(...)并没有用于对数线性图.有一个很好的解决方法吗?


正方形上的线性线性图:

from pylab import *
x = linspace(1,10,1000)
y = sin(x)**2+0.5
plot (x,y)
ax = gca()
data_aspect = ax.get_data_ratio()
ax.set_aspect(1./data_aspect)
show()
Run Code Online (Sandbox Code Playgroud)

方形线性线性图


广场上的对数图:

from pylab import *
x = linspace(1,10,1000)
y = sin(x)**2+0.5
plot (x,y)
ax = gca()
ax.set_yscale("log")
ax.set_xscale("log")
xmin,xmax = ax.get_xbound()
ymin,ymax = ax.get_ybound()
data_aspect = (log(ymax)-log(ymin))/(log(xmax)-log(xmin))
ax.set_aspect(1./data_aspect)
show()
Run Code Online (Sandbox Code Playgroud)

方形对数图


但是当我尝试使用对数线性图时,我没有得到方形区域,而是一个警告

from pylab import *
x = linspace(1,10,1000)
y = sin(x)**2+0.5
plot (x,y)
ax = gca()
ax.set_yscale("log")
xmin,xmax = ax.get_xbound()
ymin,ymax = ax.get_ybound()
data_aspect = (log(ymax)-log(ymin))/(xmax-xmin)
ax.set_aspect(1./data_aspect) …
Run Code Online (Sandbox Code Playgroud)

python logarithm matplotlib

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