python 常用记录

all()

>>> a = [11,22,33]
>>> all(a)
>>> ture
对序列进行判断,如果全为真,则返回Ture
>>> a = [11,22,0]
>>> all(a)
>>> false
一旦有一个为空,返回false

datetime

>>> from datetime import datetime
>>> print datetime.now()
2016-08-18 10:33:21.218000
指定日期和时间
>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期时间创建datetime
>>> print(dt)2015-04-19 12:20:00
datetime 转换为timestamp
>>> from datetime import datetime
>>> import time
>>> dt = datetime(2016, 8, 16, 10, 40)
>>> print time.mktime(dt.timetuple())
timestamp的值与时区毫无关系,因为timestamp一旦确定,其UTC时间就确定了,转换到任意时区的时间也是完全确定的,这就是为什么计算机存储的当前时间是以timestamp表示的,
因为全球各地的计算机在任意时刻的timestamp都是完全相同的(假定时间已校准)。
timestamp 转换为datetime
>>> from datetime import datetime
>>> t = 1429417200.0
>>> print(datetime.fromtimestamp(t))
字符串转换为datetime
>>> from datetime import datetime
>>> t = '2016-8-16 10:40:38'
>>> day = datetime.strptime(t,'%Y-%m-%d %H:%M:%S')
>>> print day
>>> 2016-08-16 10:40:38

datetime 转换为str
>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now.strftime('%a, %b %d %H:%M'))
Mon, May 05 16:28

python 跨进程锁的实现-fcntl

首先先介绍fileObject.fileno(); 这个方法
此方法返回整数的底层实现使用请求从操作系统的I / O操作的文件描述符.
#!/usr/bin/python
#coding:utf-8

f = open('lock.txt','a+')
print f.fileno()
print f.name
f.close()
3
lock.txt

fcntl这次应用于对pid file的书写

flock() : flock(f, operation)
  operation : 包括:
    fcntl.LOCK_UN 解锁
    fcntl.LOCK_EX  排他锁
    fcntl.LOCK_SH  共享锁
    fcntl.LOCK_NB  非阻塞锁
LOCK_SH 共享锁:所有进程没有写访问权限,即使是加锁进程也没有。所有进程有读访问权限。
LOCK_EX 排他锁:除加锁进程外其他进程没有对已加锁文件读写访问权限。
LOCK_NB 非阻塞锁:
fcntl.LOCK_EX | fcntl.LOCK_NB这种应用是,当获取到文件有锁的信息,程序直接except
def write_pid()
    f = open(pidfile, "a+")
    try:
        fcntl.flock(f.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)
    except IOError:
        print "Can not write pid into: ", pidfile
        return False
    f.truncate()   #将文件内容清除
    f.write(str(os.getpid()))
    f.flush()
    f.seek(0)
    f.close()
    return True

logging 日志输出

模块提供 filter, logger, hanlder, formatter
可以通过logging.getLogger(name)获取logger对象
handler:将日志记录(log record)发送到合适的目的地(destination),比如文件,socket等。一个logger对象可以通过addHandler方法添加0到多个handler,
每个handler又可以定义不同日志级别,以实现日志分级过滤显示。
filter:提供一种优雅的方式决定一个日志记录是否发送到handler。
        formatter:指定日志记录输出的具体格式。formatter的构造方法需要两个参数:消息的格式字符串和日期字符串,这两个参数都是可选的。


import logging
from logging.handlers import TimedRotatingFileHandler
import datetime
file = "ogent_" + datetime.datetime.now().strftime('%b-%d-%y') + ".log"
path_to_file = 'C:\\Users\\ma\\PycharmProjects\\ma\\modle\\'
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
logger.propagate = False   #这是一个布尔标志,用于指示消息是否传播给父记录器
logFormatter = logging.Formatter('%(asctime)s %(filename)12s:%(lineno)4d %(levelname)-6s %(message)s')  #规定日志格式
logHandler = TimedRotatingFileHandler(path_to_file + file,when='midnight')   #规定时间重新创建log,“midnight”: Roll over at midnight
logHandler.setLevel(logging.DEBUG)
logHandler.setFormatter(logFormatter)
logger.addHandler(logHandler)
keep_fds = [logHandler.stream.fileno()]

TimedRotatingFileHandler(filename [,when [,interval [,backupCount]]])
when 是一个字符串的定义如下:
“S”: Seconds
“M”: Minutes
“H”: Hours
“D”: Days
“W”: Week day (0=Monday)
“midnight”: Roll over at midnight
interval 是指等待多少个单位when的时间后,Logger会自动重建文件,当然,这个文件的创建
取决于filename+suffix,若这个文件跟之前的文件有重名,则会自动覆盖掉以前的文件,所以
有些情况suffix要定义的不能因为when而重复。
backupCount 是保留日志个数。默认的0是不会自动删除掉日志。若设10,则在文件的创建过程中
库会判断是否有超过这个10,若超过,则会从最先创建的开始删除。

format格式化字符串

通过位置
print '{0},{1}:{0}'.format('ma','test')
ma,test:ma
通过关键字
print '{name},{id}'.format(name='ma',id='test')
ma,test
通过对象属性
class Format(object):
   def __init__(self,name,age):
      self.Name = name
      self.Age = age
   def __str__(self):
      return 'The guy is {self.Name} , is {self.Age} years old'.format(self=self)
      
The guy is kzc , is 18 years old

原创文章,作者:心肝坏了,如若转载,请注明出处:http://www.178linux.com/37154

(0)
心肝坏了心肝坏了
上一篇 2016-09-19
下一篇 2016-09-19

相关推荐

  • iptables 从入门到进阶

    Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(或网络层防火墙)。在Linux中netfilter和iptables都是指Linux防火墙。区别在于: netfilter:指的是Linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于“内核态”的防火墙功能体系。 iptables:指的是…

    Linux干货 2017-01-10
  • bind-9.9.5编译安装

    bind-9.9.5编译安装 §·bind-9.9.5编译安装大概步骤 步骤一 :下载源码包bind-9.9.5 ; 步骤二 :按需求选择模块或功能 ./configure ;  # ./configure  –prefix=/usr/local/bind9  –sysconfdir=…

    Linux干货 2016-10-09
  • 文本处理工具

    分页查看文件内容 less和more命令介绍 分页查看文件内容:less和more less:一页一页地查看文件或STDIN输出   # less FILE less的快捷键:     Ctrl+u:向上翻半屏     Ctrl+d:向下翻…

    Linux干货 2016-08-07
  • Openssl搭建私有CA认证

    概述 CA英文全称Certification Authority,即数字证书认机构。从广义上来说,CA是负责发放和管理数字证书的权威机构,并作为用户数字认证中受信任的第三方,承担公钥体系(PKI)中公钥的合法性检验的责任,在互联网上,实现用户与用户、用户与企业之间的数字身份认证。 本文通过使用openssl进行搭建私有CA认证体系,从而简单地了解CA的认证过…

    Linux干货 2016-09-22
  • 访问控制列表ACL

     ACL是Access Control List的缩写,主要的目的是提供传统的owner、group、others的read、write、execute权限之外的具体权限设置。ACL可以针对单一用户、单一文件、单一目录来进行r、w、x的权限设置,对于需要特殊权限的使用状况非常有帮助。使用getfacl和setfacl来设置查看acl的权限。ACL权…

    Linux干货 2016-08-07
  • 系统管理之程序包管理(二)yum详解

    系统管理之程序包管理(二)yum详解:     上节向大家介绍了程序包管理的理论和rpm命令的使用,本篇文章接着向大家介绍rpm的前端使用工具,方便大家更快捷的管理,使用rpm包,提高工作效率。 一 概论: Centos:yum,dnf 两个rpm前端工具 YUM :yellow dog, Yellowdog,Upda…

    Linux干货 2016-08-24