Python 初學筆記 第三章 其它模組

2022-09-06 16:27:07 字數 4302 閱讀 3182

目錄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的和再...