python學習-常用模組-os,random,logging

來源:互聯網
上載者:User

標籤:程式   arc   getc   檔案中   logs   rect   import   絕對路徑   指令碼   

os模組(補充中)1.查看當前路徑及切換路徑

>>> import os
>>> os.getcwd()  #擷取當前檔案所在的路徑
‘D:\\python\\Lib\\idlelib‘
>>> os.chdir(‘../‘)  #切換當上一層目錄,此處可以是相對路徑
>>> os.getcwd()
‘D:\\python\\Lib‘

>>> os.chdir(‘D:\Program Files (x86)‘)  #也可以是絕對路徑
>>> os.getcwd()
‘D:\\Program Files (x86)‘

補充:

在pycharm上發現os.getcwd()與os.path.realpath("./")返回的都是.py檔案的絕對路徑,其實不是的,這個目錄並不是指指令碼所在的目錄,而是所運行指令碼的目錄。

實際上os.path.relpath(path[, start])  #從start開始計算相對路徑。

print(__file__)·#返迴文件的相對路徑,包含檔案名稱

os.path.abspath(__file__)#返迴文件的絕對路徑,包含檔案名稱

os.path.dirname(os.path.abspath(__file__))#上一個路徑的檔案名稱所在的目錄,就是當前檔案的上一層

dis_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#再往上一層,可以利用這條,通過import sys; sys.path.append(dis_path),將其加到環境變數中,這樣就可以實現跨路徑調用檔案。

2.查看當前路徑下的檔案是否存在

os.path.exists(‘檔案名稱‘),存在返回True

可以結合上面的切換路徑使用,查看不同路徑下有沒有此檔案

3,替換與重新命名檔案

os.repalce()

replace(*args, **kwargs): 

Rename a file or directory, overwriting the destination.
前面檔案用後面檔案名稱替換

os.rename()

用法一樣,但是有個區別

os.replace(f1,f2) #f2如果存在,f1仍然更名為f2,並將f2替換掉

os.rename(f1,f2)#f2如果存在,就報錯

random模組 
1 import random2 print(random.random())  #列印一個隨機的float數3 print(random.randint(1,5)) #列印1到5之間隨機的int數,包括1和54 print(random.randrange(1,5))  #列印1到5之間隨機的int數,包括1,不包括5

輸出:

0.370659405830737342

執行個體:產生驗證碼

 1 import random 2 checkcode = ‘‘ 3 for i in range(4): 4     current = random.randrange(0,4) 5     if current != i: 6         """chr()返回整數對應的ASCII碼中的英文字母,這裡65-90代表26個大寫字母,97-122返回26個小寫字母。相反,ord(‘a‘)返回字母a在ascii中對應的數字""" 7         temp = chr(random.randint(65,90)) 8     else: 9         temp = random.randint(0,9)10     checkcode += str(temp)11 print(checkcode)
logging模組(補充中) 

日誌共有6個層級,由高到低如下:

CRITICAL = 50

FATAL = CRITICAL

ERROR = 40

WARNING = 30

WARN = WARNING

INFO = 20

DEBUG = 10

NOTSET = 0

 

1,預設情況下,longging只會講warning以上的層級的日誌列印到螢幕上,包括warning。

import logging

 

# logging.basicConfig()

 

logging.debug(‘this is debug‘)

logging.info(‘this is info‘)

logging.warning(‘this is warning‘)

logging.error(‘this is error‘)

logging.critical(‘this is critical‘)

 

輸出:

WARNING:root:this is warning

ERROR:root:this is error

CRITICAL:root:this is critical

 

 

2.通過logging.basicConfig函數對日誌的輸出格式及方式做相關配置

import logging

logging.basicConfig(filename=‘log.log‘,

                    format=‘%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s‘,

                    datefmt=‘%Y-%m-%d %H:%M:%S %p‘,

                    level=10)

 

logging.debug(‘this is debug‘)

logging.info(‘this is info‘)

logging.warning(‘this is warning‘)

logging.error(‘this is error‘)

logging.critical(‘this is critical‘)

 

會產生一個log.log的檔案,並將日誌追加到檔案中:預設是追加。

如下:

2017-05-25 18:09:13 PM - root - DEBUG -logging mod:  this is debug

2017-05-25 18:09:13 PM - root - INFO -logging mod:  this is info

2017-05-25 18:09:13 PM - root - WARNING -logging mod:  this is warning

2017-05-25 18:09:13 PM - root - ERROR -logging mod:  this is error

2017-05-25 18:09:13 PM - root - CRITICAL -logging mod:  this is critical

?

 

logging.basicConfig函數各參數:

filename: 指定記錄檔名

filemode: 和file函數意義相同,指定記錄檔的開啟模式,‘w‘或‘a‘

format: 指定輸出的格式和內容,format可以輸出很多有用資訊,如上例所示:

 %(levelno)s: 列印記錄層級的數值

 %(levelname)s: 列印記錄層級名稱

 %(pathname)s: 列印當前執行程式的路徑,其實就是sys.argv[0]

 %(filename)s: 列印當前執行程式名

 %(funcName)s: 列印日誌的當前函數

 %(lineno)d: 列印日誌的當前行號

 %(asctime)s: 列印日誌的時間

 %(thread)d: 列印線程ID

 %(threadName)s: 列印線程名稱

 %(process)d: 列印進程ID

 %(message)s: 列印日誌資訊

datefmt: 指定時間格式,同time.strftime()

level: 設定記錄層級,預設為logging.WARNING

stream: 指定將日誌的輸出資料流,可以指定輸出到sys.stderr,sys.stdout或者檔案,預設輸出到sys.stderr,當stream和filename同時指定時,stream被忽略

以上日誌模組參考:http://www.cnblogs.com/dkblog/archive/2011/08/26/2155018.html

python學習-常用模組-os,random,logging

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.