1. 程式人生 > >(Tensorflow之二十一)python常用庫檔案

(Tensorflow之二十一)python常用庫檔案

1、import numpy as np

numpy無需多說,應該是運用最多的了。在大陣的矩陣運算中優勢十分明顯;

2、import tensorflow as tf

Google 開發的第二代人工智慧學習系統,搞AI的應該第一行程式碼就是這個了;

3、import os.path

os.path模組主要用於檔案的屬性獲取。

例:

3.1 os.path.dirname(path) 返回路徑

>>> os.path.dirname('home\abiggg\hello.py')
'home\abiggg\' 

3.2 os.path.basename(path)返回檔名

>>> os.path.dirname('home\abiggg\hello.py')
'hello.py' 

3.3 os.path.isfile(‘home\abiggg\hello.py’) 判斷該路徑下的文 件是否存在

True 

3.4 os.path.join(path1[, path2[, …]]) 將多路徑組合

>>>os.path.join(\home, \abig,\hello.py) 
\home\abiggg\hello.py

4、import sys

4.1 sys.path 根據sys.path的路徑來搜尋module.name

Sys.path.append(“\home\abiggg\hello.py”).

將自已寫的文 件加入庫檔案的搜尋路徑,從而可以用import hello.py 來呼叫庫

4.2 sys.exit(n)中途退出

但是如果需要中途退出程式, 你可以呼叫sys.exit 函式, 它帶有一個可選的整數引數返回給呼叫它的程式. 這意味著你可以在主程式中捕獲對sys.exit 的呼叫

4.3 sys.argv[number]將外部引數傳入程式中

例:Test.py中的程式碼如下

import sys
print sys.argv[0]
print sys.argv[1]

呼叫時

>>>test.py test_2

則列印

test.py
test_2

5、import datetime

處理日期和時間的標準庫

5.1 datetime.now()

>>> now = datetime.now()
>>> print now
2017-11-10 00:04:49.656000

5.2 timedelta(days、hours、seconds、microseconds)

>>> print now
2017-11-10 00:04:49.656000
>>> now += timedelta(hours=10)
>>> print now
2017-11-10 10:04:49.656000

6、import random

返回隨機生成的一個實數,它在[0,1)範圍內;

# 生成第一個隨機數
print "random() : ", random.random()

# 生成第二個隨機數
print "random() : ", random.random()

列印結果

random() :  0.281954791393
random() :  0.309090465205

7、import tarfile

用於壓縮與解壓

7.1 解壓

import tarfile  
tar = tarfile.open("sample.tar.gz")  
tar.extractall()  
tar.close() 

7.2 壓縮

#建立壓縮包名
tar = tarfile.open("/tmp/tartest.tar.gz","w:gz")
#建立壓縮包
for root,dir,files in os.walk("/tmp/tartest"):
for file in files:
   fullpath = os.path.join(root,file)
   tar.add(fullpath)
tar.close()

8、import logging

主要用於輸出執行日誌,可以設定輸出日誌的等級、日誌儲存路徑、日誌檔案回滾等;

import logging
logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")

9、import hashlib

加密模組。

hash = hashlib.md5()#md5物件,md5不能反解,但是加密是固定的,就是關係是一一對應,所以有缺陷,可以被對撞出來
hash.update(bytes('admin',encoding='utf-8'))#要對哪個字串進行加密,就放這裡
print(hash.hexdigest())#拿到加密字串
# hash2=hashlib.sha384()#不同演算法,hashlib很多加密演算法
# hash2.update(bytes('admin',encoding='utf-8'))
# print(hash.hexdigest())


hash3 = hashlib.md5(bytes('abd',encoding='utf-8'))
''' 如果沒有引數,所以md5遵守一個規則,生成同一個對應關係,如果加了引數,
就是在原先加密的基礎上再加密一層,這樣的話引數只有自己知道,防止被撞庫,
因為別人永遠拿不到這個引數
'''
hash3.update(bytes('admin',encoding='utf-8'))
print(hash3.hexdigest())

10、import re

正則匹配。

#!python

>>> p = re.compile('(a(b)c)d')

>>> m = p.match('abcd')

>>> m.group(0)

'abcd'

>>> m.group(1)

'abc'

>>> m.group(2)

'b'

11、import struct

結構體物件,通常的打包和解包

"""
打包和解包
"""
import struct
import binascii

values = (1, b'good', 1.22) #檢視格式化對照表可知,字串必須為位元組流型別。
s = struct.Struct('I4sf')
packed_data = s.pack(*values)
unpacked_data = s.unpack(packed_data)

print('Original values:', values)
print('Format string :', s.format)
print('Uses :', s.size, 'bytes')
print('Packed Value :', binascii.hexlify(packed_data))
print('Unpacked Type :', type(unpacked_data), ' Value:', unpacked_data)

結果

Original values: (1, b'good', 1.22)
Format string : b'I4sf'
Uses : 12 bytes
Packed Value : b'01000000676f6f64f6289c3f'
Unpacked Type : <class 'tuple'>  Value: (1, b'good', 1.2200000286102295)
[Finished in 0.1s]