分类
python

python非英文国家编码问题

python运行错误

File "ex3.py", line 1
SyntaxError: Non-ASCII character '\xe5' in file ex3.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

我只是在注释里加了中文,同样错误,现在在python脚本的头部加入

# -- coding: utf-8 --

这样就使用了utf-8编码,就不会出错了。

 

分类
python

python中DNS查询和反向查询

用到的还是python的socket库,用到函数getaddrinfo()

定义如下:

getaddrinfo(host, port, family=0, socktype=0, proto=0, flags=0)
例:

#!/usr/bin/env python
import sys, socket
result = socket.getaddrinfo("jpuyy.com", 80, 0, 0, socket.SOL_TCP)
print result

返回结果是

[(10, 1, 6, ”, (‘2604:6600:1059::5810:3a0a’, 80, 0, 0)), (2, 1, 6, ”, (‘216.24.201.107’, 80))]

执行反向查询

gethostbyaddr(ip_address)

查询主机名的详细信息

getfqdn([name])   #Return a fully qualified domain name for name.

http://docs.python.org/library/socket.html

在debian下面安装PyDNS( python-dns )进行DNS的高级查询

apt-get install python-dns

程序中,import DNS,先进行 DNS.DiscoverNameServers(),然后建立一个请求对象 DNS.Request()。请求后PyDNS会返回包含结果的对象。

分类
python

在python中使用syslog

在开始记录前,调用openlog()函数初始化syslog

openlog([ident[, logopt[, facility]]])

ident标识字符串

logopt代表选项

现在初始化之后

syslog([priority], message)

message是想记录的简单字符串。priority表明这条信息的重要性。它被syslog配置文件用来确定对一个给定的信息该如何处理。

http://docs.python.org/library/syslog.html

分类
python

显示电脑所安装python所支持的socket选项列表

setsockopt()和getsockopt()

用如下程序

#!/usr/bin/env python
#for use:
#author: jpuyy date  jpuyy.com stubusy@gmail.com
#modified by xx at date
#version:
#history:
#relate on:

import socket
solist = [x for x in dir(socket) if x.startswith('SO_')]
solist.sort()
for x in solist:
    print x

执行后显示

SO_ACCEPTCONN
SO_BROADCAST
SO_DEBUG
SO_DONTROUTE
SO_ERROR
SO_KEEPALIVE
SO_LINGER
SO_OOBINLINE
SO_RCVBUF
SO_RCVLOWAT
SO_RCVTIMEO
SO_REUSEADDR
SO_SNDBUF
SO_SNDLOWAT
SO_SNDTIMEO
SO_TYPE

setsockopt()用法

socket.setsockopt(level, optname, value)

getsockopt()用法

socket.getsockopt(level, optname[, buflen])

参见

http://docs.python.org/library/socket.html

:)EOT

分类
python

python的socket中的getservbyname()函数

getservbyname()函数

可以根据端口名,如tcp,udp 和端口名,如http 。找到这个端口的端口号。

如下程序

#!/usr/bin/env python

import socket
port = socket.getservbyname('http','tcp')
print "http's port is %d" % port

运行后会显示

http’s port is 80

参见:http://docs.python.org/library/socket.html

:)EOT