本文目錄一覽:
- 1、每周一個 Python 模塊 | ipaddress
- 2、python socket 地址重用的問題
- 3、python 執行用例腳本
- 4、python符號錯誤怎麼解決?
- 5、python 無法顯示漢字
- 6、python AF_INET address是什麼
每周一個 Python 模塊 | ipaddress
ipaddress 模塊包括用於處理 IPv4 和 IPv6 網路地址的類。這些類支持驗證,查找網路上的地址和主機以及其他常見操作。
最基本的對象代表網路地址本身。傳遞字元串,整數或位元組序列給 ip_address() 來構造地址。返回值是 IPv4Address 或 IPv6Address 實例,具體取決於所使用的地址類型。
還可以用這個方法來校驗 IP 地址是否合法:
網路是由一系列地址組成的,通常用地址和掩碼這種形式來表示。
與地址一樣,IPv4 和 IPv6網路有兩種網路類。每個類提供用於訪問與網路相關聯的值的屬性或方法,例如廣播地址和可供主機使用的網路上的地址。
網路實例是可迭代的,併產生網路上的地址。
此示例僅列印一些地址,因為 IPv6 網路可以包含的地址遠多於輸出中的地址。
迭代網路會產生地址,但並非所有地址都對主機有效。例如,網路的基地址和廣播地址。要查找網路上常規主機可以使用的地址,請使用 hosts() 方法,該方法會生成一個生成器。
將此示例的輸出與前一示例進行比較表明,主機地址不包括在整個網路上進行迭代時生成的第一個值。
除了迭代器協議之外,網路還支持 in 操作,來確定地址是否是網路的一部分。
in 使用網路掩碼來測試地址,因此它比擴展網路上的完整地址列表更有效。
網路介面表示網路上的特定地址,並且可以由主機地址和網路前綴或網路掩碼錶示。
介面對象具有分別訪問完整網路和地址的屬性,以及表達介面和網路掩碼的幾種不同方式。
相關文檔:
python socket 地址重用的問題
我想你客戶端和 服務端的代碼寫錯文件了吧。
另外還要排除一個問題:
確定你在執行第二步驟的時候,第一個步驟佔用的埠6000已經釋放掉了。
一般服務是要先跑的。由服務端來監聽埠,等待客戶端連接。
python 執行用例腳本
檢查你的 ini 配置文件, 裡面是否有
[address]
url=XXXX
這樣的內容
其中 [address] 這個叫做 Section, url=XXXX 這個叫做 Option. 你遇到的問題表示整個 [address] section 都沒有; 如果有 [address] 這行, 但是該區段內沒有 url=xxxxx 這樣的內容, 則會得到 CofigParser.NoOptionError 異常.
python符號錯誤怎麼解決?
+這個符號,如果參與運算的都是數字,那就是數學裡的加法;
如果參與運算的是字元,則同連接,但你一個是字元一個是數字則會出錯,你只需要在將1改為str(1)或是「1」就可以了:
b_address = “E” + str(int(str_name) + str(1) + address_one)
由於不知道address_one的值類型,並且上面代碼有使用str(address_one),所以建議在此處也對address_one添加str,即:
b_address = “E” + str(int(str_name) + str(1) + str(address_one))
python 無法顯示漢字
實際上,這段代碼所出現的問題和cPickle模塊沒什麼關係。而是Python 2顯示中文「亂碼」的問題。
Python 2中,str是8-bit string sequence(有點像Python 3中的bytes)。而Python 3中str就相當於Python 2中的unicode。
所以,
a = ‘上海’
repr(a)
“‘\\xc9\\xcf\\xba\\xa3′”
a # a中存儲的8位元組轉義字元序列
‘\xc9\xcf\xba\xa3’
print a # 輸出a,在此過程中,會對a進行解碼操作,然後輸出
上海
上例中,可以看到:
a = ‘上海’
a中實際存儲的是:
‘\xc9\xcf\xba\xa3’
這樣一個位元組序列。它實際上是對’上海’這個unicode字元串按gbk/cp936/gb18030編碼得到的(和簡體中文Windows操作系統的默認編碼有關)。
給你推薦一篇博客:
下面是我寫的示例:
# _*_ coding: gbk _*_
# Test with Python 2.7, Python 3.3 on Windows XP
try:
import cPickle as p
except:
import pickle as p
address_file = ‘address.txt’
class Human(object):
def __init__(self, address):
self.address = address
def txl(self):
af = {‘address’: self.address}
print(af)
print(af[‘address’])
f = open(address_file, ‘wb’) # In python 3, use binary mode.
# In python 2.7, default protocol is 0.
# However, it is 3 in python 3.3.
p.dump(af, f, 0)
f.close()
address = ‘上海’
print(address)
dq = Human(address)
dq.txl()
af = open(address_file, ‘rb’) #
print(p.load(af))
af.close()
“””
Output
—————————————-
Python 2.7.6:
1. # -*- coding: utf-8 -*-
涓婃搗
{‘address’: ‘\xe4\xb8\x8a\xe6\xb5\xb7’}
涓婃搗
{‘address’: ‘\xe4\xb8\x8a\xe6\xb5\xb7’}
2. # -*- coding: gbk -*- or # _*_ coding: cp936 _*_
上海
{‘address’: ‘\xc9\xcf\xba\xa3’}
上海
{‘address’: ‘\xc9\xcf\xba\xa3’}
Python 3.3.3:
上海
{‘address’: ‘上海’}
上海
{‘address’: ‘上海’}
——————————————
In Python 3.3.3:
‘上海’.encode(‘utf-8’)
b’\xe4\xb8\x8a\xe6\xb5\xb7′
_.decode(‘cp936’)
‘涓婃搗’
“””
從這個示例中可以看出,雖然把字典整個print出來不能正常解析address中的內容:
addr = {‘addr’: ‘上海’}
addr
{‘addr’: ‘\xc9\xcf\xba\xa3’}
print addr
{‘addr’: ‘\xc9\xcf\xba\xa3’}
但是單獨列印:
addr[‘addr’]
‘\xc9\xcf\xba\xa3’
print addr[‘addr’] # print 輸出之前隱含了編碼解碼操作,但為何列印整個字典時輸出不正常尚待研究
上海
一切OK。
所以,如果真的用Python 2的話,對於該問題可以考慮手工負責編碼、解碼操作(如果使用print單獨列印地址信息,就不用這麼麻煩了,因為這些事它幫你做了)。用Python3,就沒這麼多問題了。
最後補充一點,pickle模塊只是提供了一種序列化Python對象的方法。所以序列化生成的文件中和想像的不一樣也不足為奇。正如自由de王國所說的,只要序列化後還能夠反序列化成功就行了。實際上,當protocol不是0的情況下,序列化生成的文件是二進位格式的,根本沒法用記事本直接看。
python AF_INET address是什麼
AF = Address Family
PF = Protocol Family
意思就是 AF_INET 主要是用於互聯網地址,而 PF_INET 是協議相關,通常是sockets和埠
AF_INET address即使用IP。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/244354.html