⑴ 如何配置OPENCV的python介面
從已編譯好的Opencv安裝
1.確保你的電腦已經安裝下面的python包:numpy和matplotlib。使用python2.7版本哦。其實,你要是用Anaconda的話,這步略過吧
2.安裝包到默認位置(多餘了吧,好像沒用,進入下一步)
3.打開Python IDLE,imort numpy。確保numpy已裝好。(裝了Anconda的童靴略過吧)
4.下載OpenCV。(我前面給出官網連接,去下吧,記得解壓哈)
5.解壓後,去這個文件夾:opencv/build/python/2.7
6.拷貝cv2.pyd到你的Anaconda目錄下/lib/site-packages.
7.打開Anaconda的DOS框,輸入python,接著
import cv2
print cv2.__version__
如果可以列印opencv的版本好,並且沒報錯,那麼恭喜你安裝成功。開始基於opencv的python介面來學習opencv吧。
⑵ python 調用介面
python和C++都能從多個父類繼承,沒有介面這么一說啊。
⑶ python,requests庫做介面自動化時,傳參格式是json,怎麼傳圖片
json傳圖片一般兩種方式:
將圖片轉換為base64,傳base64
先通過另一個上傳介面上傳圖片 ,返回圖片的URL,然後在json中填入圖片的URL。
⑷ python支持介面編程嗎
python支持介面編程。
⑸ 如何實現python介面,的https
今天寫代碼時碰到一個問題,花了幾個小時的時間google,基本上把google搜索的前幾頁內容都一一看了下,問題最終是解決了,不過過程挺曲折的,所以把這個過程記下來以便以後參考之。
原因是以下一段代碼引起的:
?
12
import urllib2urllib2.urlopen('https://xxxx.com')
本來這段代碼很簡單的,就是請求一個https的連接,可是報以下錯誤:
?
1
urllib2.URLError:
第一反應是https證書問題產生的,如是以'python ssl' 為關鍵字google後,看到大家都在用'requests'這個python組件做http請求客戶端,就像java裡面的httpclient組件一樣,如果安裝完request包後,改成如下代碼:
?
12
import requestsrequests.get('https://xxx.com')
還是報以下錯誤:
?
1
requests.exceptions.SSLError:
[Errno 1] _ssl.c:504: error:140773E8:SSL routines:SSL23_GET_SERVER_HELLO:reason(1000)
可以看出來,用requests和urllib2報的錯誤信息是一樣,可見它們都是基於相同的底層api操作的,比如基於TLS的socket連接。到這里的時候我懷疑這個問題不是python代碼寫的有問題,可能是操作系統級別的設置錯了。如下直接在shell客戶端運行如下測試腳本:
?
1
wget
https://xxx.com
果然報如下錯誤:
?
12
OpenSSL:
error:140773E8:SSL routines:SSL23_GET_SERVER_HELLO:reason(1000)無法建立
SSL 連接。
到這里我懷疑是openssl安裝有問題,更新到最新版本後還是一樣,然後在瀏覽器里訪問是可以的,所以應該不是openssl有問題。繼續google.......,就發現有人也遇到過這種問題,說是連接SSL伺服器時SSL的版本不對,如是用如下代碼測試不同的SSL版本,看是不是這個問題:
?
12345
curl
-1 https://xxx.com curl
-2 https://xxx.com curl
-3 https://xxx.com
分別用上面的三句腳本去測試連接情況,發現第三種可以連接正常(-1,2,3,數字分別代碼tlsv1,sslv2,sslv3三個不同的SSL版本)。說明這個https連接所在的伺服器是基於SSLV3版本的。找到的問題,就很容易知道怎麼改寫python代碼了。
?
123456789
class MyAdapter(HTTPAdapter): def init_poolmanager(self,
connections, maxsize): self.poolmanager= PoolManager(num_pools=connections, maxsize=maxsize, ssl_version=ssl.PROTOCOL_SSLv3) s= requests.Session()s.mount('https://',
MyAdapter())#所有的https連接都用ssl.PROTOCOL_SSLV3去連接s.get('https://xxx.com')
urllib2實現:
?#
custom HTTPS opener, banner's oracle 10g server supports SSLv3 onlyimport httplib,
ssl, urllib2, socketclass HTTPSConnectionV3(httplib.HTTPSConnection): def __init__(self,*args,**kwargs): httplib.HTTPSConnection.__init__(self,*args,**kwargs) def connect(self): sock= socket.create_connection((self.host,self.port),self.timeout) if self._tunnel_host: self.sock= sock self._tunnel() try: self.sock= ssl.wrap_socket(sock,self.key_file,self.cert_file,
ssl_version=ssl.PROTOCOL_SSLv3) except ssl.SSLError,
e: print("Trying
SSLv3.") self.sock= ssl.wrap_socket(sock,self.key_file,self.cert_file,
ssl_version=ssl.PROTOCOL_SSLv23) class HTTPSHandlerV3(urllib2.HTTPSHandler): def https_open(self,
req): return self.do_open(HTTPSConnectionV3,
req)#
install openerurllib2.install_opener(urllib2.build_opener(HTTPSHandlerV3())) if __name__== "__main__": r= urllib2.urlopen("htANPROD1/bwskfcls.P_GetCrse") print(r.read())
可以看到這兩種方案的原理都是一樣,就是自定義連接處理器,改變連接時ssl的版本號。
⑹ python抓取介面內容用什麼方法
你的問題事實上包含幾部分:
將 pdf 轉化為純文本格式
抽取其中部分內容
格式化寫入到 excel 中
轉換 PDF 有很多庫可以完成,如下是通過 pdfminer 的示例:
from cStringIO import StringIO
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
def convert_pdf_2_text(path):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
device = TextConverter(rsrcmgr, retstr, codec='utf-8', laparams=LAParams())
interpreter = PDFPageInterpreter(rsrcmgr, device)
with open(path, 'rb') as fp:
for page in PDFPage.get_pages(fp, set()):
interpreter.process_page(page)
text = retstr.getvalue()
device.close()
retstr.close()
return text
需要指出的是,pdfminer 不但可以將 PDF 轉換為 text 文本,還可以轉換為 HTML 等帶有標簽的文本。上面只是最簡單的示例,如果每頁有很獨特的標志,你還可以按頁單獨處理。
⑺ api介面和python庫的區別是什麼
API 介面屬於一種操作系統或程序介面,而後兩者都屬於直接用戶介面。 有時公司會將 API 作為其公共開放系統。也就是說,公司制定自己的系統介面標准,當需要執行系統整合、自定義和程序應用等操作時,公司所有成員都可以通過該介面標准調用源代碼,該介面標准被稱之為開放式 API。
⑻ Python中怎麼寫介面啊,我在網上一直找不到
什麼是介面 ?
介面只是定義了一些方法,而沒有去實現,多用於程序設計時,只是設計需要有什麼樣的功能,但是並沒有實現任何功能,這些功能需要被另一個類(B)繼承後,由 類B去實現其中的某個功能或全部功能。
個人的理解,多用於協作開發時,有不同的人在不同的類中實現介面中的各個方法。
在python中介面由抽象類和抽象方法去實現,介面是不能被實例化的,只能被別的類繼承去實現相應的功能。
個人覺得介面在python中並沒有那麼重要,因為如果要繼承介面,需要把其中的每個方法全部實現,否則會報編譯錯誤,還不如直接定義一個class,其中的方法實現全部為pass,讓子類重寫這些函數。
當然如果有強制要求,必須所有的實現類都必須按照介面中的定義寫的話,就必須要用介面。
方法一:用抽象類和抽象函數實現方法
[python]view plain
#抽象類加抽象方法就等於面向對象編程中的介面
fromabcimportABCMeta,abstractmethod
classinterface(object):
__metaclass__=ABCMeta#指定這是一個抽象類
@abstractmethod#抽象方法
defLee(self):
pass
defMarlon(self):
pass
classRelalizeInterfaceLee(interface):#必須實現interface中的所有函數,否則會編譯錯誤
def__init__(self):
print'這是介面interface的實現'
defLee(self):
print'實現Lee功能'
defMarlon(self):
pass
classRelalizeInterfaceMarlon(interface):#必須實現interface中的所有函數,否則會編譯錯誤
def__init__(self):
print'這是介面interface的實現'
defLee(self):
pass
defMarlon(self):
print"實現Marlon功能"
[python]view plain
classinterface(object):#假設這就是一個介面,介面名可以隨意定義,所有的子類不需要實現在這個類中的函數
defLee(self):,
pass
defMarlon(self):
pass
classRealaize_interface(interface):
def__init__(self):
pass
defLee(self):
print"實現介面中的Lee函數"
classRealaize_interface2(interface):
def__init__(self):
pass
defMarlon(self):
print"實現介面中的Marlon函數"
obj=Realaize_interface()
obj.Lee()
obj=Realaize_interface2()
obj.Marlon()
⑼ python如何寫上一介面
# -*- coding:utf-8 -*-# Author Caoxlimport sys account_file='E:\user.txt'locked_file='E:\locked.txt' def deny_account(username): print('您的用戶已被鎖定') with file(locked_file,'a') as deny_f: deny_f.write('\n'+username) def main(): retry_count=0 retry_limit=3 #循環次數 while retry_count<retry_limit: #用戶最多重復登陸3次 username=raw_input('請輸入您的用戶名:') #引導用戶輸入用戶名 with file(locked_file,'r') as lock_f: #採用with打開方式,將locked_file賦值lock_f,防止忘記f.close()關閉文件 for line in lock_f.readlines(): #循環遍歷每一行的內容 if len(line)==0: #對每一行內容進行處理 continue if username == line.strip(): #利用.strip這個函數去掉換行符,來對username進行匹配。 sys.exit('用戶已經被鎖定!') if len(username)==0: #提示用戶登錄時,用戶名不能為空! print('用戶名不能為空,請重新輸入') continue password= raw_input('請輸入您的密碼:') #引導用戶輸入密碼 with file(account_file,'r') as account_f: flag= False for line in account_f.readlines(): user,pawd=line.strip().split() #將用戶名和對應密碼進行處理 if username==user and password==pawd: #判斷用戶名和密碼 print('success!') flag=True break #退出for循環 if flag==False: #避免用戶在三次輸入後,依然提示重新輸入。 if retry_count<2: print('您輸入的用戶名或密碼有誤,請重新輸入!') retry_count+=1 else: print('歡迎用戶登陸成功!!') break # 加標志位是為了用戶能夠成功推出整個循環! deny_account(username) #對應上面的def函數把鎖定賬號加入文檔中去 if __name__ == '__main__': main()
⑽ python 3.x什麼框架寫後台介面最合適
django, tornado都可以