例若有個簡單的文件,如上咱們能夠對這個相應格式的文件進行一些操做
一、獲取全部節點 sections
1
2
3
4
5
6
|
import
configparser
xx
=
configparser.ConfigParser()
# 建立一個對象
xx.read(
"ini"
,encoding
=
"utf8"
)
# 讀取相應文件
result
=
xx.sections()
# 獲取全部節點
print
(result)
|
二、獲取指定節點下全部的鍵 options
1
2
3
4
5
6
7
|
import
configparser
xx
=
configparser.ConfigParser()
# 建立一個對象
# xx的對象的read功能,打開讀取文件,放進內容
xx.read(
"ini"
,encoding
=
"utf8"
)
# 讀取相應文件
result
=
xx.options(
"kaixin"
)
# 獲取指定節點下全部的鍵
print
(result)
|
三、獲取指定節點下全部的鍵值對 items
1
2
3
4
5
6
7
|
import
configparser
xx
=
configparser.ConfigParser()
# 建立一個對象
# xx的對象的read功能,打開讀取文件,放進內容
xx.read(
"ini"
,encoding
=
"utf8"
)
# 讀取相應文件
result
=
xx.items(
"kaixin"
)
# 獲取指定節點下的全部鍵值對
print
(result)
|
四、獲取指定節點下指定key的值
1
2
|
result
=
xx.get(
"kaixin"
,
"age"
)
print
(result)
|
五、檢查,添加,刪除節點
1
2
3
4
5
6
7
8
9
10
11
|
# 檢查節點是否存在,返回的是布爾值
has_sec
=
xx.has_section(
"kaixin"
)
print
(has_sec)
# 添加節點
xx.add_section(
"Tom"
)
xx.write(
open
(
"ini"
,
"w"
))
# 刪除節點
xx.remove_section(
"Tom"
)
xx.write(
open
(
"ini"
,
"w"
))
|
六、檢查、刪除、設置指定組內的鍵值對
1
2
3
4
5
6
7
8
9
10
11
|
# 檢查節點下的key值是否存在,返回的是布爾值
has_opt
=
xx.has_option(
"kaixin"
,
"age"
)
print
(has_opt)
# 刪除鍵值對
xx.remove_option(
"kaixin"
,
"money"
)
xx.write(
open
(
"ini"
,
"w"
))
# 設置鍵值對
xx.
set
(
"tony"
,
"money"
,
"10000"
)
xx.write(
open
(
"ini"
,
"w"
))
|
hashlib
用於加密相關的操做,代替了md5模塊和sha模塊,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
1
2
3
4
5
|
import
hashlib
hash
=
hashlib.md5(bytes(
"bingdu"
,encoding
=
"utf8"
))
# 建立md5對象,並額外加密
hash
.update(bytes(
"123"
,encoding
=
"utf8"
))
# 對字符串加密
print
(
hash
.hexdigest())
# 取到密文
|
subprocess
能夠執行shell命令的相關模塊和函數有
- os.system
- os.spawn*
- os.popen* —廢棄
- popen2.* —廢棄
- commands.* —廢棄,3.x中被移除
以上執行shell命令的相關的模塊和函數的功能均在 subprocess 模塊中實現,並提供了更豐富的功能。
subprocess.Popen(...)
用於執行復雜的系統命令
參數:
- args:shell命令,能夠是字符串或者序列類型(如:list,元組)
- bufsize:指定緩衝。0 無緩衝,1 行緩衝,其餘 緩衝區大小,負值 系統緩衝
- stdin, stdout, stderr:分別表示程序的標準輸入、輸出、錯誤句柄
- preexec_fn:只在Unix平臺下有效,用於指定一個可執行對象(callable object),它將在子進程運行以前被調用
- close_sfs:在windows平臺下,若是close_fds被設置爲True,則新建立的子進程將不會繼承父進程的輸入、輸出、錯誤管道。
- 因此不能將close_fds設置爲True同時重定向子進程的標準輸入、輸出與錯誤(stdin, stdout, stderr)。
- shell:同上
- cwd:用於設置子進程的當前目錄
- env:用於指定子進程的環境變量。若是env = None,子進程的環境變量將從父進程中繼承。
- universal_newlines:不一樣系統的換行符不一樣,True -> 贊成使用 \n
- startupinfo與createionflags只在windows下有效
- 將被傳遞給底層的CreateProcess()函數,用於設置子進程的一些屬性,如:主窗口的外觀,進程的優先級等等
- shell=True: 指定的命令行會經過shell來執行
- stdin : 標準輸入
- stdout : 標準輸出
- stderr : 標準錯誤的文件句柄
- PIPE : 管道 ,默認值 爲: None, 表示不作重定向,管道能夠用來接收數據。
把標準輸出放入管道中,屏幕上就不會輸出內容。 res=subprocess.Popen("dir", shell=True,stdout=subprocess.PIPE,stdin=subprocess.PIPE,stderr=subprocess.PIPE) #執行dir命令,交給shell解釋器執行,經過標準類型和subprocess.PIPE放入管道中。 >>> res.stdout.read() #讀取管道里面的數據,在程序中,讀取也不會輸出到屏幕上。 >>> res.stdout.read() #再read一次,內容就爲空,說明讀取完成. b'' #顯示爲:bytes類型
optparse
Python 有兩個內建的模塊用於處理命令行參數:
一個是 getopt,《Deep in python》一書中也有提到,只能簡單處理 命令行參數;
另外一個是 optparse,它功能強大,並且易於使用,能夠方便地生成標準的、符合Unix/Posix 規範的命令行說明。
簡單流程
首先必須導入模塊optparse(這個很少說)
import optparse # 建立OptionParser類對象 parser = optparse.OptionParser() # 而後,使用add_option來定義命令行參數(僞代碼) # parser.add_option(opt_str, ... # attr= value,...) # 每一個命令行參數就是由參數名字符串和參數屬性組成的。如 -f 或者 –file 分別是長短參數名: parser.add_option("-f","--file",dest = "filename") # 最後,一旦你已經定義好了全部的命令行參數,調用 parse_args() 來解析程序的命令行: options,args = parser.parse_args() 注: 你也能夠傳遞一個命令行參數列表到 parse_args();不然,默認使用 sys.argv[:1]。 parse_args() 返回的兩個值: options,它是一個對象(optpars.Values),保存有命令行參數值。只要知道命令行參數名,如 file,就能夠訪問其對應的值: options.file 。 args,它是一個由 positional arguments 組成的列表。
struct
學習到socket網絡編程這裏,對struct有了認識,如今對它進行一些闡釋,也能夠較爲有效的解決粘包問題
struct模塊做用:解決bytes和其餘二進制數據類型的轉換
示例用法:
struct.pack('i',12)
參數說明:
pack函數做用:把任意數據類型變成bytes
i 表示4字節無符號整數。
import struct struct.pack('i',12) # 用方法pack進行打包,把後面的整形數據,封裝成一個bytes類型 b'\x0c\x00\x00\x00' # 長度就是4 l=struct.pack('i',12313123) len(l) 4 #長度就是4
uppack
# 反解 struct.unpack('i',l) (12313123,) # 查看類型 l=struct.pack('i',1) type(l) <class 'bytes'> # bytes類型