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('寫入雙很多天期日誌')
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
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']
import string print(string.ascii_letters)#全部大小寫字母 print(string.ascii_lowercase)#全部小寫字母 print(string.ascii_uppercase)#全部大寫字母 print(string.digits)#全部數字 print(string.punctuation)#全部特殊標點符號 print(string.printable)#數字+字母+特殊字符
時間有三種表示方式,一種是時間戳、一種是格式化時間、一種是時間元組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
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'))
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)
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數據,而後轉成字典