1.list(数组)
x代表数组中的元素,i代表位置
a) append(x) 把元素x添加到数组的尾部
b) insert(i,x) 把元素x 插入到位置i
c) remove(x) 删除第一个元素x
d) pop(i) 删除第i个元素,并返回这个元素。若调用pop()则删除最后一个元素
e) index(x) 返回数组中第一个值为x的位置。如果没有匹配的元素会抛出一个错误
f) count(x) 返回x在数组中出现的次数
g) sort() 对数组中的元素进行排序
h) reverse() 对数组中的元素用倒序排序
2.dict(字典)
字典(Dictionary)是一种映射结构的数据类型,由无序的“键-值对”组成。字典的键必须是不可改变的类型,如:字符串,数字,tuple;值可以为任何python数据类型。
1)、新建字典
>>> dict1={} #建立一个空字典
>>> type(dict1)
<type ‘dict’>
2)、增加字典元素:两种方法
>>> dict1['a']=1 #第一种
>>> dict1
{’a': 1}
#第二种:setdefault方法
>>> dict1.setdefault(’b',2)
2
>>> dict1
{’a': 1, ‘b’: 2}
3)、删除字典
......
a=1
print id(a)
a=2
print id(a)
a=a+1
print id(a)
-------------------------------------------------------------------------------------------------------------------------
t=6
def tt():
global t
t=t+1
print t
print t
tt()
结果为:
6
7
-------------------------------------------------------------------------------------------------------------------------
t=6
def tt():
t=t+1
print t
print t
tt()
结果:出错 exceptions.UnboundLocalError: local variable 't' referenced before assignment
-------------------------------------------------------------------------------------------------------------------------
def f1(n):
m=n
def f2(i):
print m,i
return f2
a=f1(2)
b ......
最近用到python的socket实现进程间通信,发现网上的资料很零散,例子极少。写了一个example:
Server:
if __name__ == '__main__':
import socket
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
import os
if os.path.exists('/tmp/UNIX.d'):
os.unlink('/tmp/UNIX.d')
sock.bind('/tmp/UNIX.d')
sock.listen(5)
while True:
connection,address = sock.accept()
print "Data : %s"%connection.recv(1024);
connection.send("hello")
connection.close()
Client:
if __name__ == '__main__':
import socket
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect("/tmp/UNIX.d")
import time
time.sleep(2)
sock.send('hello')
print sock.recv(1024)
sock.close() ......
1.简单的将日志打印到屏幕
import
logging
logging.
debug(
'This is debug message'
)
logging.
info(
'This is info message'
)
logging.
warning(
'This is warning message'
)
屏幕上打印:
WARNING:root:This is warning message
默认情况下,logging将日志打印到屏幕,日志级别为WARNING;
日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别。
2.通过logging.basicConfig函数对日志的输出格式及方式做相关配置
import
logging
logging.
basicConfig(
level=
logging.
DEBUG,
format=
'%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s'
,
datefmt=
'%a, %d %b %Y %H:%M:%S'
,
& ......
一些系统可能需求把数据导出到Access或者Excel文件格式,以方便的传递数据、打印等。
Excel 文件或者 Access这两种需要导出的文件可能并不是事先就存在的,这就需要我们自己编程生成他们,下面整理一下生成这两个文件的一些方法,只罗列最常用的。并不全。
一、首先生成Excel文件。
方案一、如果用Excel保存的只是二维数据,也就是把他当数据库的来用。
最简单,你不用引用任何额外组件,只需要用 OLEDB 就可以完成创建Excel文件。 范例代码如下。
using System.Data.OleDb;
public static void CreateExcelFile2()
{
string OLEDBConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\aa2.xls;";
OLEDBConnStr += " Extended Properties=Excel 8.0;";
string strCreateTableSQL = @" CREATE TABLE ";
strCreateTableSQL += @" 测试表 ";
strCreateTableSQL += @" ( ";
strCreateTableSQL += @" ID INTEGER, ";
strCreateTableSQL += @" UserID INTEGER, ";
strCreateTableSQL += @" ......
一些系统可能需求把数据导出到Access或者Excel文件格式,以方便的传递数据、打印等。
Excel 文件或者 Access这两种需要导出的文件可能并不是事先就存在的,这就需要我们自己编程生成他们,下面整理一下生成这两个文件的一些方法,只罗列最常用的。并不全。
一、首先生成Excel文件。
方案一、如果用Excel保存的只是二维数据,也就是把他当数据库的来用。
最简单,你不用引用任何额外组件,只需要用 OLEDB 就可以完成创建Excel文件。 范例代码如下。
using System.Data.OleDb;
public static void CreateExcelFile2()
{
string OLEDBConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\aa2.xls;";
OLEDBConnStr += " Extended Properties=Excel 8.0;";
string strCreateTableSQL = @" CREATE TABLE ";
strCreateTableSQL += @" 测试表 ";
strCreateTableSQL += @" ( ";
strCreateTableSQL += @" ID INTEGER, ";
strCreateTableSQL += @" UserID INTEGER, ";
strCreateTableSQL += @" ......
http://hi.baidu.com/sqldebug/blog/item/58a764624a44d74eeaf8f863.html
一、如何限制系统服务和桌面程序只运行一个
如何限制系统服务和桌面程序只运行一个
在工程加入下列代码可以设置系统服务和桌面程序只运行一个。
program FleetReportSvr;
uses
SvcMgr,
Forms,
SysUtils,
Windows,
SvrMain in 'SvrMain.pas' {FleetReportService: TService},
AppMain in 'AppMain.pas' {FmFleetReport};
{$R *.RES}
const
CSMutexName = 'Global\Services_Application_Mutex';
var
OneInstanceMutex: THandle;
SecMem: SECURITY_ATTRIBUTES;
aSD: SECURITY_DESCRIPTOR;
begin
InitializeSecurityDescriptor(@aSD, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(@aSD, True, nil, False);
SecMem.nLength := SizeOf(SECURITY_ATTRIBUTES);
SecMem.lpSecurityDescriptor := @aSD;
SecMem.bInheritHandle := False;
OneInstanceMutex := CreateMutex(@SecMem, False, CSMutexName);
if (GetLastError = ERROR_ALREADY_EXISTS)then
begin
DlgError('Error, Program or service already running!');
& ......