目錄configparser
subprocess
socketserver
用於外部傳遞引數的處理。
import optparse
parse = optparse.optionparser()
parse.add_option("-s", "--server", dest="server", help="ftp server ip_addr")
parse.add_option("-p", "--port", type="int", dest="port", help="ftp server port")
parse.add_option("-u", "--username", dest="username", help="username")
parse.add_option("-p", "--password", dest="password", help="password")
options, args = parse.parse_args()
print(options, args)
# 取值
print(options.server)
print(options.port)
print(options.username)
print(options.password)
# shell 下執行
python test.py -s127.0.0.1 -p9000 -uadmin -padmin
127.0.0.1
9000
admin
admin
對配置檔案進行操作
配置檔案格式:
[option1]
key1 = value1
key2 = value2
[option2]
key3 = value3
key4 = value4
# config.ini 檔案
# [user1]
# home = /home/user1
# password = 12345
# [user2]
# home = /home/user2
# password = aaaa
import configparser
config_obj = configparser.configparser()
config_obj.read('config.ini')
# 檢視配置檔案裡的所有配置段(""裡面的值)
print('sections:', config_obj.sections())
# 檢視指定配置段裡面所有的引數
print('options user1:', config_obj.options('user1'))
# 獲取配置段下面指定引數的值
print('options user1.home:', config_obj.get('user1', 'home'))
# 獲取配置段下面引數和值的鍵值對
print('options user1.items:', config_obj.items('user1'))
# 字典形式直接獲取指定配置段下執行引數的值
print('options user1.home', config_obj['user1']['home'])
sections: ['user1', 'user2']
options user1: ['home', 'password']
options user1.home: /home/user1
options user1.items: [('home', '/home/user1'), ('password', '12345')]
options user1.home /home/user1
import configparser
config_obj = configparser.configparser()
config_obj['global'] =
# 像字典一樣直接修改
config_obj['global']['port'] = '8080'
with open('server.ini', 'w') as f:
config_obj.write(f)
# server.ini檔案
[global]
ip = 127.0.0.1
port = 8080
子程序-具有可訪問的i/o流的子程序。
import subprocess
# 需要系統執行的命令
cmd = 'echo windows shell'
# 執行系統命令 cmd
# 將命令用系統終端執行(shell=true)
# 執行結果的標準輸出結果放入管道(stdout=subprocess.pipe)
# 執行結果的標準錯誤結果放入管道(stderr=subprocess.pipe)
# 管道的特點是把資料塞入管道裡,取出管道裡的資料管道就空了
result_obj = subprocess.popen(cmd, shell=true,
stdout=subprocess.pipe,
stderr=subprocess.pipe)
# 從標準輸出的管道裡讀資料
result = result_obj.stdout.read()
# 如果從標準輸出讀出的資料為空
if not result:
# 則從標準錯誤的管道裡讀資料
result = result_obj.stderr.read()
# 得到的資料是位元組型別, 解碼後輸出
print(result.decode('gbk'))
windows shell
socketserver模組可以簡化網路伺服器的編寫,python把網路服務抽象為兩個主要的類,乙個是server類,用於處理連線相關的網路操作,另外乙個
則是requesthandler類,用於處理資料相關的操作,並且提供兩個mixin類,用於擴充套件server,實現多程序或多執行緒。
# 服務端
import socketserver
ip = ('127.0.0.1', 9000)
data =
class myserver(socketserver.baserequesthandler):
"""自定義乙個功能類必須繼承socketserver.baserequesthandler,
邏輯功能方法必須叫handle, 裡面是邏輯**
"""def handle(self):
while true:
try:
user = self.request.recv(1024).decode()
if user in data:
msg = f': '.encode()
else:
msg = (f' not exists'.encode())
self.request.send(msg)
except connectionreseterror as e:
print(e)
self.request.close()
# 選擇使用threadingtcpserver(threading, tcp, server)例項化
server = socketserver.threadingtcpserver(ip, myserver)
# 啟動
server.serve_forever()
# 客戶端
import socket
ip = ('127.0.0.1', 9000)
client = socket.socket(socket.af_inet, socket.sock_stream)
client.connect(ip)
while true:
msg = input('>>>:')
if not msg:
continue
client.send(msg.encode())
data = client.recv(1024)
print(data.decode())
# 最後實現的是使用多執行緒處理客戶端連線
Python 初學筆記 第三章 模組
目錄模組就是工具包,工具包裡有許多的工具可以使用。模組便於管理,乙個 py 檔案就是乙個模組。模組的分類 模組的匯入 呼叫 乙個 py 檔案就可以是乙個模組。匯入自定義模組和模組的查詢路徑有關,可以用 sys.path 檢視,需要全域性都能匯入模組可以將模組放在 site packages 第三方庫...
第三章筆記
第三章預習筆記 一 高階語言和機器指令中的運算 1,按位運算 符號 按位or運算 符號 按位and運算 符號 表示按位not運算 符號 按位xor運算。實現掩碼操作 通過與給定的乙個位模式進行按位與,可以提取所需要的位,對這些位進行 置1 清0 等。2,符號 按位or運算 符號 表示and運算 符號...
python學習筆記第三章
1.序列,列表和元組和字串統稱為序列,list 生成乙個空列表,list a 將a序列化為列表。tuple a 將a轉為元祖,str a 將a轉為字串,len a 返回a的長度。max a 返回a中的最大值,如果非數字就返回ascii碼值。min a 返回最小值。sum a,start 計算a的和再...