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.www58058.com/37154

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

相關推薦

  • 計算機基礎及Linux基礎

    計算機基礎與Linux入門 計算機組成及功能 Linux常見發行版 Linux重要哲學思想 Linux文件系統層級結構及文件命名規則 如何獲取Linux命令的使用幫助 Linux常用命令及示例 1.1 計算機組成及功能 1.1.1 計算機的五大部件 計算機的主要組成部分有: 1、CPU:運算器 2、控制器、寄存器(內部存儲)、緩存; 3、存儲器:內存,RAM…

    Linux干貨 2016-12-04
  • 進程管理

    進程管理 內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能 用戶模式(空間),內核模式(空間) Process(進程):運行中的程序的一個副本         存在生命周期 task struct:內核的結構體 Linux內內核存儲進程信息的固定格式:tas…

    Linux干貨 2016-09-10
  • 硬盤及文件系統基礎概念

    機械硬盤HDD(Mechanical hard disk) 機械硬盤中所有的盤片都裝在一個旋轉軸上,每張盤片之間是平行的,在每個盤片的存儲面上有一個磁頭,磁頭與盤片之間的距離比頭發絲的直徑還小,所有的磁頭聯在一個磁頭控制器上,由磁頭控制器負責各個磁頭的運動。 磁頭(Head): 對硬盤上的數據進行讀寫操作. 磁道(Track) 當磁盤旋轉時,磁頭若保持在一個…

    Linux干貨 2017-04-09
  • Linux文件與目錄管理之權限與命令之間的關系

    Linux文件與目錄管理之權限與命令之間的關系 我們知道權限對于用戶賬戶來說是非常重要的,因為它可以限制用戶能不能讀取/新建/刪除/修改文件或目錄。在這我們就來說明下什么命令在什么樣的權限下才能夠運行。         讓用戶能進入某目錄成為“可工作目錄”的基本權限是什么     &nbs…

    Linux干貨 2017-04-24
  • linux基礎學習-第九天(shell基礎)

    2016-08-10 授課內容: shell腳本基礎: 變量 運算 bash測試(數字測試、字符測試、文件測試、組合測試) read命令 變量作用: 1、數據存儲格式 2、參與的運算 3、表示的數據范圍 變量類型: 1、本地變量 2、環境(全局)變量 3、特殊變量     駝峰命名變量:每個單詞一個字母大寫 本地變量:…

    Linux干貨 2016-08-11
  • SHELL網絡爬蟲實例剖析

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1552472        前天簡單分享了用 shell 寫網絡爬蟲的一些見解,今天特地把代碼發出來與51博…

    Linux干貨 2016-08-15
欧美性久久久久