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

相关推荐

  • 计算机;GPL等开源协议;Linux 哲学思想的炼成;MBR & GPT—fazion in magedu 20.July

    入门Linux的基础知识 fazionlan blog in 178Linux.July 22nd. 第一台计算机 1946第一台计算机ENIAC(electronic numerical integrator and calculator)在美国滨州大学诞生,是美国奥伯丁武器试验场为了满足计算弹道而研制的 冯诺依曼体系结构:1946年数学家提出运算器、控制…

    Linux干货 2016-07-29
  • N23-第二周博客作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理工具:cp,mv,rm    cp命令:cope       源文件:目标文件       单源复制:cp [OPTION]… [-T] SOURCE DEST …

    Linux干货 2016-12-05
  • 自制Linux系统

    自制Linux系统 1.首选准备一台Linux虚拟机并添加一块新硬盘 2.分区并创建文件系统,创建两个必要的分区根分区和boot分区 fdisk /dev/sdb  分区 mke2fs -t ext4 /dev/sdb1    创建boot文件系统 mke2f…

    Linux干货 2016-09-16
  • 第一次发微博

    第一次申请微博,第一次发微博,觉得很难

    Linux干货 2017-01-06
  • 文件查找命令find详解

    文件的查找命令 find 用法 功能:实时查找工具,通过遍历指定路径完成文件查找 工作特点: •  查找速度略慢•  精确查找•  实时查找•  可能只搜索用户具备读取和执行权限的目录 语法:   find [OPTION]… [查找路径] [查找条件] [处理动作] 查找路径:指定具体目标路径;默认为当前目录查找条件…

    Linux干货 2016-11-07
  • 简单救援模式应用

                                  …

    2017-08-12