一、日志記錄模塊
Logging 默認情況下,logging將日志打印到屏幕,日志級別大小關系為:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,當然也可以自己定義日志級別。
DEBUG:詳細的信息,通常只出現在診斷問題上;?INFO:確認一切按預期運行 ;WARNING:一個警告,可能會有一些意想不到的事情發生了,或表明一些問題在不久的將來(例如。磁盤空間低”)。這個軟件還能按預期工作 ; ERROR:個更嚴重的問題,軟件沒能執行一些功能 ;CRITICAL:一個嚴重的錯誤,這表明程序本身可能無法繼續運行。
案例一:
import logging
# logging.basicConfig(level=logging.DEBUG)
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt=' %Y/%m/%d %H:%M:%S', filename='myapp.log', filemode='w')
logger = logging.getLogger(__name__)
def hello():
print("hello world")
def main():
logger.info("開始執行main函數")
print("##"*10)
hello()
logger.info("調用hello() 函數")
try:
a = 2/0
f = open("demon1.py", "r")
except Exception as e:
logger.error("除數不能為0")
finally:
logger.warning("文件沒有正常關閉")
main()
執行結果如下:
二、os模塊
os.name
如果結果為nt, 則為windows系統,
如果結果為posix, 則為unix系統
os.system(cmd) 純粹的執行系統命令,但是沒有返回結果
result = os.popen(cmd)
result.read() 這樣你就可以對reuslt進行控制了
案例二:
import os
print(os.name)
if os.name == "nt":
cmd = "ipconfig"
elif os.name == "posix":
cmd = "ifconfig"
# os.system(cmd)
print(os.listdir("C:")) #列出當前目錄, ls
# os.chdir("..") #改變目錄, cd
print(os.listdir())
print(os.getcwd()) #pwd
# os.mkdir("test")
# os.remove("myapp.log")
# os.rmdir("test")
# os.rename("demon1.py", "demon111.py")
print(os.linesep)
# windows換行符\n\r linux換行符\n mac \r
if not os.path.exists("test"):
os.mkdir("test")
print(os.path.abspath("./"))
執行結果:
?
三、sys模塊
案例四:
import sys
print(sys.argv[1])
print(sys.argv[2])
print(sys.stdout)
sys.stdout.write("allalallala")
f = open("1.log", "w")
sys.stdout = f
print("hello world")
四、random
隨機模塊
random.randint(a, b)
案例五:
import random
print(random.randrange(1, 100, 2))
print(random.sample([1, 2, 3, 4, 5, 6, 7], 2))
class NumberCount(object):
def __init__(self):
self.number1 = 0
self.number2 = 0
self.number3 = 0
self.number4 = 0
self.number5 = 0
self.number6 = 0
def count(self):
for i in range(1, 6001):
number = random.randint(1, 6)
if number == 1:
self.number1 += 1
if number == 2:
self.number2 += 1
if number == 3:
self.number3 += 1
if number == 4:
self.number4 += 1
if number == 5:
self.number5 += 1
if number == 6:
self.number6 += 1
def getResult(self):
print("1出現的次數: {0}".format(self.number1))
print("2出現的次數: {0}".format(self.number2))
print("3出現的次數: {0}".format(self.number3))
print("4出現的次數: {0}".format(self.number4))
print("5出現的次數: {0}".format(self.number5))
print("6出現的次數: {0}".format(self.number6))
if __name__ == "__main__":
numberCount = NumberCount()
numberCount.count()
numberCount.getResult()
執行結果:
?
?
五、random模塊
import random
random模塊 random.random() 0-1 random.randint(a, b) a<n<b 整型 random.uniform(10, 20) 10<n<20 浮點型 random.randrange(10, 100, 2),結果相當于從[10, 12, 14, 16, ... 96, 98]序列中獲取一個隨機數。 random.sample的函數原型為:random.sample(sequence, k),從指定序列中隨機獲取指定長度的片斷。sample函數不會修改原有序列。
?
六、string模塊
案例六:
import string
print(string.ascii_letters) 生成所有字母
print(string.digits) 生成所有數字
print(string.ascii_lowercase) 生產所有小寫字母
print(string.ascii_uppercase) 生產所有大寫字母
print(string.printable) 包含所有可打印字符的字符串
print(string.punctuation) 找出字符串中的所有的標點
print(string.hexdigits) 十六進制數字
執行效果:
?
print("".join(random.sample(string.ascii_letters + string.digits, 4)))
隨機生產4個密碼執行效果:
?