Python學習筆記十二_經常使用模塊

1、os

import os #對操做系統的一些操做
print(os.getcwd())#取當前工做目錄
os.chmod('/usr/local',7)#給linux文件/目錄加權限,對windows下很差使,1執行 2寫 4讀
os.chdir('../')#更改當前目錄(回到上一級目錄),沒有返回值
print(os.curdir)#當前目錄, .
print(os.pardir)#父目錄, ..
os.makedirs('aa/bb')#遞歸建立文件夾,父目錄不存在時建立,文件夾已存在時,沒法建立
os.mkdir('cc')#建立文件夾,文件夾已存在時,沒法建立
os.removedirs('aa/bb')#遞歸刪除空目錄
os.rmdir('cc')#刪除指定的空文件夾
os.remove('temp.py')#刪除文件
print(os.listdir())#列出當前目錄下的全部文件及文件夾
print(os.listdir('d:/'))#列出d盤的全部文件
os.rename('test','test1')#重命名
print(os.stat('tmp.py'))#獲取文件信息
print(os.sep)#當前操做系統的路徑分隔符,win:\,linux:/
# day5+os.sep+tmp.py 用os.sep拼接路徑,提升系統兼容性
print(os.linesep)#當前操做系統的換行符,\n \r\n
print(os.pathsep)#當前系統的環境變量中每一個路徑的分隔符,linux是:,windows是;
print(os.environ)#當前系統的環境變量
print(os.name)#當前系統名稱,Windows系統都是nt linux都是posix,用來判斷當前是什麼系統
print(os.system('dir'))#執行操做系統命令的,查看當前目錄下有什麼內容dir,用來執行linux下備份
res = os.system('dir')#不能獲取到命令執行結果,返回0表明命令執行成功,用來建立文件夾等不須要返回結果的命令
res = os.popen('ifconfig').read()#能夠獲取到命令執行的結果
os.open('top').read() #沒法執行,由於top命令執行結果一直在動態變化
os.popen('top -n 1').read() #只取一次,能夠得到結果
print(os.path.abspath('.'))#獲取絕對路徑
print(__file__) # 獲取到當前文件的絕對路徑,但路徑分隔符不對
print(os.path.abspath(__file__))# 獲取到當前文件的絕對路徑
print(os.path.split('/usr/hehe/hehe.txt'))#分割路徑和文件名,取list[1]就直接能夠取出文件名
print(os.path.dirname('d:\\work'))#獲取父目錄,獲取它的上一級目錄,d:\
print(os.path.basename('d:\\work'))#獲取最後一級,若是是文件顯示文件名,若是是目錄顯示目錄名,work
print(os.path.exists('d:\\work'))#目錄/文件是否存在,True
print(os.path.isabs('d:\\work'))#判斷是不是絕對路徑,True
print(os.path.isfile('tmp.py'))#判斷是不是一個文件,一、文件要存在二、必須是一個文件
print(os.path.isdir('d:\\work'))#是不是一個路徑,目錄是否存在,True
print(os.path.getsize('tmp.py'))#獲取文件的大小,返回的是字節,能夠用來限制文件上傳大小
print(os.path.join('root','db','a.sql'))#拼接成一個路徑,,分隔符會自動識別,與os.sep的一致更智能,root\db\a.sql
print(os.path.getatime('tmp.py'))#輸出最近訪問時間
print(os.path.getmtime('tmp.py'))#輸出最近訪問時間

 os.walk是一個很是強大的方法,能夠將文件夾下的子文件夾裏的文件遍歷出來python

os.walk返回的是一個二維數組,數組每一個元素都包含絕對路徑、文件夾、文件三個元素,能夠用三個變量來循環 linux

for data in os.walk(r'd:\workspace\python\syz-dongrui\Day6'):
    print(data)
for abs_path,dir,file in os.walk(r'd:\workspace\python\syz-dongrui\Day6'):#獲取目錄下內容
    # 路徑前面加個r,不會把/n等轉義
    # os.listdir()列出當前目錄下的全部文件,os.walk會遍歷子文件夾找到全部文件
    print(abs_path,dir,file)
    # abs_path 當前循環的絕對路徑
    # dir 目錄下面全部的文件夾 [ ]
    #  file 目錄下面的全部文件  []

小練習:android

在log文件夾下批量新增子文件夾及文件 ios

import os,datetime
dirs = ['android','apache','app','ios','nginx','python','tomcat']
os.chdir(r'D:\workspace\python\syz-dongrui\Day6\logs')
base_path = r'D:\workspace\python\syz-dongrui\Day6\logs'
for d in dirs:
    path = os.path.join(base_path,d)
    os.mkdir(path)
    os.chdir(path)
    for i in range(10):
        t = datetime.date.today()-datetime.timedelta(days=i)
        filename = '%s-%s.log'%(d,t)
        open(filename,'w')

把雙很多天期的日誌,裏面隨便寫點東西nginx

import os
for abs_path,dir,file in os.walk('D:\workspace\python\syz-dongrui\Day6\logs'):
#獲取到log目錄下面的全部文件
    for f in file:
        day = f.split('.')[0].split('-')[-1]#取出文件的日期
        if int(day)%2==0:
            filename = os.path.join(abs_path,f)#拼接絕對路徑
            open(filename,'a+',encoding='utf-8').write('寫入雙很多天期日誌')

2、sys

import sys
print(sys.platform) #判斷操做系統,win32
print(sys.path) #python的環境變量
sys.path.append('../day5_函數')#添加環境變量
sys.path.insert(0,r'../day5_函數') #比append效率高,能夠不去找其餘環境變量了
print(sys.argv) #用來獲取命令行裏面運行python文件的時候傳入的參數
# 它是一個list,list默認就有一個元素,就是當前的這個文件名
sys.exit(n) #退出程序,正常退出時exit(0)
print(sys.version) #獲取Python解釋程序的版本信息
sys.stdout.write('please:')#向屏幕輸出一句話
val = sys.stdin.readline()[:-1]#獲取輸入的值

下面寫個小工具tools.py來講明sys.argv的做用git

  (1) 用來獲取命令行裏面運行python文件的時候傳入的參數
  (2) 它是一個list
  (3) 這個list默認就有一個參數,就是當前的這個文件名算法

import sys
command = sys.argv
print(command) #['tools.py', '--help']
if len(command) > 1:
    cmd1 = command[1]
    if cmd1 == '--help':
        print('這個是幫助文檔'
              '這個python文件是用來講明sys.argv的做用')
    elif cmd1 == 'os':
        print('當前的操做系統是%s'%sys.platform)
else:
    print('運行python的時候要傳入一個參數'
          'e.g python xx.py install')

在當前目錄下運行命令行,或者在pycharm中打開Terminalsql

輸入python tools.py --help,即打印「這個是幫助文檔這個python文件是用來講明sys.argv的做用」apache

3、random

import random
print(random.randint(1,10))#隨機取整數
print(random.randrange(1,20))#隨機產生一個range
print(random.random())#隨機浮點數,默認取0-1,不能指定範圍
print(random.uniform(1,3))#隨機小數,能夠指定範圍
print(round(random.uniform(1,99),2))#隨機小數,保留小數點後兩位
print(random.choice([1,2,3]))#隨機取1個元素
print(random.sample('hello',3))#隨機取N個元素,返回的是list
pickts = ['A','J','Q','K',2,3,4,5,6]
random.shuffle(pickts)#洗牌只能傳list
print(pickts)#['Q', 'A', 2, 6, 3, 4, 5, 'K', 'J']

4、string

import string
print(string.ascii_letters)#全部大小寫字母
print(string.ascii_lowercase)#全部小寫字母
print(string.ascii_uppercase)#全部大寫字母
print(string.digits)#全部數字
print(string.punctuation)#全部特殊標點符號
print(string.printable)#數字+字母+特殊字符

5、time & datetime

一、time

時間有三種表示方式,一種是時間戳、一種是格式化時間、一種是時間元組json

import time
print(time.timezone)#和標準時間相差的時間,單位是s,東八區-28800
print(time.time())#獲取當前時間戳
time.sleep(10) #休息10s
print(time.gmtime())#把時間戳轉換成時間元組,若是不傳的話,默認取標準時區的時間戳,東八區tm_hour須要+8
print(time.localtime())#把時間戳轉換成時間元組,若是不傳的話,默認取當前時區的時間戳
print(time.strftime('%Y-%m-%d %H:%M:%S'))#將時間元組轉換成格式化輸出的字符串,默認輸出當前時間
# strftime後面兩個參數,第一個是輸出格式,第二個是時間元組,第二個不填就爲當前時間
print(time.strptime('2018-04-21','%Y-%m-%d'))#把格式化好的時間轉成時間元組
print(time.mktime(time.localtime()))#把時間元組轉換成時間戳
time.struct_time#時間元組
print(time.asctime())#時間元轉換成格式化時間
print(time.ctime())#時間戳轉換成格式化時間

時間戳與格式化好的時間能夠經過時間元組來轉換

  (1) 時間戳->時間元組->格式化的時間

import time
def timestamp2format(timestamp = None,format='%Y-%m-%d %H:%M:%S'):
    if timestamp:#若傳入時間戳,把時間戳轉化成格式化好的時間,返回
        time_tuple = time.localtime(timestamp)#將時間戳轉換爲時間元組
        res = time.strftime(format,time_tuple)#將時間元組格式化輸出
    else:
        res = time.strftime(format) #默認返回當前格式化好的時間
    return res
print(timestamp2format())#2018-04-28 18:17:17
print(timestamp2format(1524828157,'%Y-%m-%d'))#2018-04-27

  (2) 格式化的時間->時間元組->時間戳

import time
def format2timestamp(str= None,format = '%Y-%m-%d'):
    if str:#若傳入格式化時間,把格式化時間轉爲時間戳,返回
        time_tuple = time.strptime(str,format)#把格式化時間轉爲時間元組
        res = time.mktime(time_tuple)#將時間元組轉化爲時間戳
    else:
        res = time.time()#默認返回當前時間戳
    return int(res)
print(format2timestamp())#1524910637
print(format2timestamp('2018-4-29',))#1524931200

二、datetime

import datetime
print(datetime.datetime.today())#獲取當前時間,精確到秒
print(datetime.date.today())#精確到天
print(datetime.datetime.now())#固然時間格式化輸出
res = datetime.date.today() - datetime.timedelta(days=5)#5天前的時間
res1 = datetime.datetime.today()-datetime.timedelta(days=5,minutes=-5,seconds=3,weeks=2)
print(res)
print(res1.strftime('%Y-%m-%d'))

6、hashlib

hashlib模塊,主要用於加密相關的操做,在python3的版本里,代替了md5和sha模塊,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

import hashlib
m = hashlib.md5()#實例化md5對象,bytes
m.update('hello'.encode())#不能直接對字符串加密,要先把字符串轉成bytes類型
print(m.hexdigest())#md5加密是不可逆,16進制格式hash
print(m.digest())#2進制格式hash

hash = hashlib.sha1()
hash = hashlib.sha256()
hash = hashlib.sha384()
hash = hashlib.sha512()
hash.update(b'hello')
print(hash.digest)

7、json(詳見學習筆記九)

import json    
dic = {"name":"Amy","age":18}
print(json.dumps(dic))#把字典轉成json串,須要額外寫文件
fj = open('a.json','w') 
print(json.dump(dic,fj))#把字典轉換成的json串寫到一個文件裏面
s_json = '{"name":"Amy","age":20,"status":true}'
print(json.loads(s_json))#把json串轉換成字典,須要先讀文件
fr = open('b.json','r')
print(json.load(fr))#從文件中讀取json數據,而後轉成字典
相關文章
相關標籤/搜索