模块单元学习笔记(日志记录模块os模块sys)
一、日志記錄模塊
Logging 默認(rèn)情況下,logging將日志打印到屏幕,日志級(jí)別大小關(guān)系為:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,當(dāng)然也可以自己定義日志級(jí)別。
DEBUG:詳細(xì)的信息,通常只出現(xiàn)在診斷問題上;?INFO:確認(rèn)一切按預(yù)期運(yùn)行 ;WARNING:一個(gè)警告,可能會(huì)有一些意想不到的事情發(fā)生了,或表明一些問題在不久的將來(例如。磁盤空間低”)。這個(gè)軟件還能按預(yù)期工作 ; ERROR:個(gè)更嚴(yán)重的問題,軟件沒能執(zhí)行一些功能 ;CRITICAL:一個(gè)嚴(yán)重的錯(cuò)誤,這表明程序本身可能無法繼續(xù)運(yùn)行。
案例一:
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("開始執(zhí)行main函數(shù)")
print("##"*10)
hello()
logger.info("調(diào)用hello() 函數(shù)")
try:
a = 2/0
f = open("demon1.py", "r")
except Exception as e:
logger.error("除數(shù)不能為0")
finally:
logger.warning("文件沒有正常關(guān)閉")
main()
執(zhí)行結(jié)果如下:
二、os模塊
os.name
如果結(jié)果為nt, 則為windows系統(tǒng),
如果結(jié)果為posix, 則為unix系統(tǒng)
os.system(cmd) 純粹的執(zhí)行系統(tǒng)命令,但是沒有返回結(jié)果
result = os.popen(cmd)
result.read() 這樣你就可以對(duì)reuslt進(jìn)行控制了
案例二:
import os
print(os.name)
if os.name == "nt":
cmd = "ipconfig"
elif os.name == "posix":
cmd = "ifconfig"
# os.system(cmd)
print(os.listdir("C:")) #列出當(dāng)前目錄, 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("./"))
執(zhí)行結(jié)果:
?
三、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
隨機(jī)模塊
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出現(xiàn)的次數(shù): {0}".format(self.number1))
print("2出現(xiàn)的次數(shù): {0}".format(self.number2))
print("3出現(xiàn)的次數(shù): {0}".format(self.number3))
print("4出現(xiàn)的次數(shù): {0}".format(self.number4))
print("5出現(xiàn)的次數(shù): {0}".format(self.number5))
print("6出現(xiàn)的次數(shù): {0}".format(self.number6))
if __name__ == "__main__":
numberCount = NumberCount()
numberCount.count()
numberCount.getResult()
執(zhí)行結(jié)果:
?
?
五、random模塊import random
random模塊 random.random() 0-1 random.randint(a, b) a<n<b 整型 random.uniform(10, 20) 10<n<20 浮點(diǎn)型 random.randrange(10, 100, 2),結(jié)果相當(dāng)于從[10, 12, 14, 16, ... 96, 98]序列中獲取一個(gè)隨機(jī)數(shù)。 random.sample的函數(shù)原型為:random.sample(sequence, k),從指定序列中隨機(jī)獲取指定長(zhǎng)度的片斷。sample函數(shù)不會(huì)修改原有序列。
?
六、string模塊案例六:
import string
print(string.ascii_letters) 生成所有字母
print(string.digits) 生成所有數(shù)字
print(string.ascii_lowercase) 生產(chǎn)所有小寫字母
print(string.ascii_uppercase) 生產(chǎn)所有大寫字母
print(string.printable) 包含所有可打印字符的字符串
print(string.punctuation) 找出字符串中的所有的標(biāo)點(diǎn)
print(string.hexdigits) 十六進(jìn)制數(shù)字
執(zhí)行效果:
?
print("".join(random.sample(string.ascii_letters + string.digits, 4)))
隨機(jī)生產(chǎn)4個(gè)密碼執(zhí)行效果:
?
轉(zhuǎn)載于:https://www.cnblogs.com/iwss/p/8948583.html
總結(jié)
以上是生活随笔為你收集整理的模块单元学习笔记(日志记录模块os模块sys)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Luogu1443 马的遍历【STL通俗
- 下一篇: SCRIPT70: 没有权限