Ⅰ python codecs模塊怎麼安裝
python的內部是使用unicode來處理的,但是unicode的使用需要考慮的是它的編碼格式有兩種,一是UCS-2,它一共有65536個碼位
另一種是UCS-4,它有2147483648g個碼位。對於這兩種格式,python都是支持的,這個是在編譯時通過--enable-unicode=ucs2或--enable-unicode=ucs4來指定的
Ⅱ 如何將python code 打包成linux系統下可執行
pyinstaller -w --onefile xx.py -n xx
不過我是mac下打的app包是這樣
UnicodeEncodeError是小問題 可以試試
頭加utf8識別
import sys
sys.reload()
sys.defaultencoding('utf8') 不知道拼錯沒
3.print u』中文』 這樣是可以的。會轉成unicode編碼 如果這樣也是有問題 那麼按照前兩個操作就可以了 是因為你文件的編碼不對
Ⅲ python3 codecs.open和open的區別
最早的時候,只有open。
你知道的,Python 2的編碼多麼蛋疼,所以,就有了codecs.open.
至於io.open,其實是因為Python 2的open實際上是file模塊提供的,而Python 3的open是io模塊提供的。然後,Python 2.6引入了這個Python 3的特性,叫做io.open,以便和原來的open相區分。
但是,這個Python 2.6的io.open是有問題的,在一些情況下表現很怪異。Python 2.7的io.open就正常了。
個人建議:
Python3直接用open。
Python2.x下用codecs.open,特別是有中文的情況,然後也可以避免踩到2.6下面io.open的坑。
如果希望代碼同時兼容Python2和Python3,那麼推薦用codecs.open。
Ⅳ python 生成shellcode庫有哪些
python中有個概念叫模塊,模塊中包含了定義的函數,方便重用。
使用模塊的語句如下:
import 模塊名
struct模塊有個很方便的函數,pack,格式如下:
struct.pack(format,參數)
將參數內容轉換成format中指定的格式。寫shellcode時,需要將覆蓋地址倒序(little-endian)排列,為了方便,可以使用這個函數。要用到的指定格式是"<L」,以無符號長整型的little-endian格式。
Ⅳ 如何使用python 打開unicode的文件
Python核心庫的open函數是按照ascii設計的。但是,現在我們越來越多地要面對Unicode文件。好在python提供了codecs模塊,幫我們解決了這個問題。
codecs模塊的open定義如下
open( filename, mode[, encoding[, errors[, buffering]]])
Open an encoded file using the given mode and return a wrapped version providing transparent encoding/decoding.
其中前兩個參數filename和mode和默認的open相同。第三個參數encoding是關鍵,制定了文件的編碼方式。
對於常用的Unicode有這幾種utf_16、utf_16_le、utf_16_be、utf_8,每一種還有一些可用的別名,具體可以查找python manual。
utf_16、utf_16_le、utf_16_be參數的區別是這樣的。
如果指定了utf_16,python會檢查文件的BOM(Byte Order Mark)來判斷,文件類型到底是utf_16_le、utf_16_be。對於沒有BOM的文件會報錯。
如果我們直接指定了utf_16_le、utf_16_be,python就不檢查BOM了。對於沒有BOM的文件很好用。但是,對於有BOM的文件就要注意,它會把BOM當作第一個字元讀入。
Ⅵ python code是什麼類型
這個是html的語法吧
Ⅶ Python交互模式下,Python Shell將指令翻譯成機器語言的轉換方式屬於
REPL
什麼是 REPL
REPL 是 4 個單詞的首字母組:Read Eval Print Loop.
它表示一個循環中,在這個循環中不斷的執行:
Read -> Eval -> Print -> Read -> Eval
-> Print -> Read -> Eval -> Print -> ...
所以更准確點的英文寫法其實是 2 個單詞: read-eval-print loop。Read,讀取用戶輸入
Eval, 執行輸入內容
Print,列印輸出結果
Loop, 不斷循環以上步驟
由上面的描述可知,我們經常用的命令行或 Shell 就是這種模式。不過一般提起 REPL 的時候,都是特指編程語言的互動式運行環境。
擁有互動式的編程環境對一個語言來說,特別是它的學習者來說,是一個非常大的幫助。
下面我們就重點聊聊 Python 的 REPL。
進入 Loop
大概有這么幾種方式能夠進入 python 的互動式解釋器模式:不帶任何參數運行 python,這是最常見的方式
通過 py 啟動器運行解釋器,這是 windows 下特有的方式
使用 python -i some_script.py,執行腳本後再進入,這個我們也在前面文章中介紹過了
其它 IDE(IDLE, PyCharm 等)內嵌的所謂 python shell 或 python console,它們也要依賴系統安裝的 python
進入之後,首先看到的就是一段開場信息,然後就是 >>> 和一個閃爍的游標在等待你的輸入。「 冷門小知識:啟動時列印的消息稱為 banner,code 模塊。
前面的符號 >>> 稱為 提示符(Prompt String),我們在命令行中看到的 > 或 $ 或 # 等都是提示符。
熟悉 Linux 系統的小夥伴可能知道,環境變數有一個 PS1,可以用來定義提示符的樣式:
[root@host ~]# echo $PS1
[\u@\h \W]\$
這里的 1 代表序號,表示這是主提示符,後面還有 PS2,PS3,PS4。
扯遠了,咱還是回到 python。同樣的,這里的 >>> 也是主提示符,它是保存在 sys.ps1 這個特殊變數里的,此外還有個 sys.ps2 的值是 ...。「 注意,提示符後面有 1 個空格。sys.ps1 = '>>> ',sys.ps2 = '... '。
好玩的是,這兩個變數是可以自定義的:
>>> sys.ps1 = 'DavyCloud Python 教程 2020 > '
DavyCloud Python 教程 2020 >
DavyCloud Python 教程 2020 > x = 1
DavyCloud Python 教程 2020 > print(x)
Ⅷ python的qrcode模塊生成二維碼
讀取圖片文件,然後調用add_data。
qr.add_data(open('pic.img', 'r').read())
Ⅸ 如何定製Python模塊的查找和物理實現
有時候會需要定製這個過程,比方說,嵌入Python作為 應用容器的時候,希望有一種特別的應用打包格式,類似jar或者war,或者處 於某些原因,需要改變Python Mole的物理存儲,比如,處於查找性能上的考 慮,如果python mole能從一個key-value資料庫得到就好了,或者處於商務 上的原因,如果能對源代碼(或者pyc,而pyc很容易被反編譯到py)進行加密 處理就更好了。
In [1]: import imp
In [3]: m = imp.new_mole(test)
In [4]: code_obj = compile(import os, test.py, 'exec')
In [5]: code_obj
Out[5]: <code object <mole at 0x31b5830, file test.py, line 1
In [6]: exec code_obj in m.__dict__In [7]: m
Out[7]: <mole 'test' (built-in)
In [8]: dir(m)
Out[8]: ['__builtins__', '__doc__', '__name__', '__package__', 'os']
這裡面,newmole調用創建了一個相應的mole對象,內置函數compile則從 一個字元串(源碼)獲得了相應的code object,該object可以被exec。
參考上面的鏈接。要點在於可以用一個實現了Import Protocol的class去 hook模塊載入的過程,這個hook要被安裝到sys.pathhooks.
這是一個從網路上(github)import模塊的例子:
參考前面的代碼,關鍵在於`exec source in m._dict_`這里,source可以 是一段源碼,比如import os,也可以是一個code object,這個code object是可以被序列化和反序列化的,事實上,pyc就是該對象的序列化(加 上時間戳、magic number和crc校驗),為了性能上的考慮,反序列化要比重 編譯py源文件略好,可以把code object的序列化結果存儲下來。在Importer 那裡從該存儲設備獲取code object marshal string就行了。
•.從一個py文件獲得其code object marshal string
import marshal
source = open(test.py).read()
co = compile(source, test.py, 'exec')
co_s = marshal.mps(co)
•.從一個code object marshal string獲得一個python mole
import marshal,imp
def load_mole(co_str):
Ⅹ Python:這有可能是最詳細的PIL庫基本概念文章了
PIL有如下幾個模塊:Image模塊、ImageChops模塊、ImageCrackCode模塊、ImageDraw模塊、ImageEnhance模塊、ImageFile模塊、ImageFileIO模塊、ImageFilter模塊、ImageFont模塊、ImageGrab模塊、ImageOps模塊、ImagePath模塊、ImageSequence模塊、ImageStat模塊、ImageTk模塊、ImageWin模塊、PSDraw模塊
啊啊啊啊怎麼這么多模塊啊~~~!!!!
別擔心我為你一一講解
Image模塊提供了一個相同名稱的類,即image類,用於表示PIL圖像。
Image模塊是PIL中最重要的模塊 ,比如創建、打開、顯示、保存圖像等功能,合成、裁剪、濾波等功能,獲取圖像屬性功能,如圖像直方圖、通道數等。
Image模塊的使用如下:
ImageChops模塊包含一些算術圖形操作,這些操作可用於諸多目的,比如圖像特效,圖像組合,演算法繪圖等等,通道操作只用於8點陣圖像。
ImageChops模塊的使用如下:
由於圖像im_p是im的復制過來的,所以它們的差為0,圖像im_diff顯示時為黑圖。
ImageCrackCode模塊允許用戶檢測和測量圖像的各種特性。 這個模塊只存在於PIL Plus包中。
因為我目前安裝的PIL中沒有包含這個模塊。所以就不詳細介紹了
ImageDraw模塊為image對象提供了基本的圖形處理功能。 例如,它可以創建新圖像,注釋或潤飾已存在圖像,為web應用實時產生各種圖形。
ImageDraw模塊的使用如下:
在del draw前後顯示出來的圖像im是完全一樣的,都是在原有圖像上畫了兩條對角線。
原諒我的報錯
ImageEnhance模塊包括一些用於圖像增強的類。它們分別為 Color類、Brightness類、Contrast類和Sharpness類。
ImageEnhance模塊的使用如下:
圖像im0的亮度為圖像im的一半。
ImageFile模塊為圖像打開和保存功能提供了相關支持功能。另外,它提供了一個Parser類,這個類可以一塊一塊地對一張圖像進行解碼(例如,網路聯接中接收一張圖像)。這個類的介面與標準的sgmllib和xmllib模塊的介面一樣。
ImageFile模塊的使用如下:
因為所打開圖像大小大於1024個byte,所以報錯:圖像不完整。
所以大家想看的可以自行去找一個小一點的圖看一下
ImageFileIO模塊用於從一個socket或者其他流設備中讀取一張圖像。 不贊成使用這個模塊。 在新的code中將使用ImageFile模塊的Parser類來代替它。
ImageFilter模塊包括各種濾波器的預定義集合,與Image類的filter方法一起使用。該模塊包含這些圖像增強的濾器:BLUR,CONTOUR,DETAIL,EDGE_ENHANCE,EDGE_ENHANCE_MORE,EMBOSS,FIND_EDGES,SMOOTH,SMOOTH_MORE和SHARPEN。
ImageFilter模塊的使用如下:
ImageFont模塊定義了一個同名的類,即ImageFont類。這個類的實例中存儲著bitmap字體,需要與ImageDraw類的text方法一起使用。
PIL使用自己的字體文件格式存儲bitmap字體。用戶可以使用pilfont工具包將BDF和PCF字體描述器(Xwindow字體格式)轉換為這種格式。
PIL Plus包中才會支持矢量字體。
ImageGrab模塊用於將屏幕上的內容拷貝到一個PIL圖像內存中。 當前的版本只在windows操作系統上可以工作。
ImageGrab模塊的使用如下:
圖像im顯示出筆記本當前的窗口內容,就是類似於截圖的工具
ImageOps模塊包括一些「ready-made」圖像處理操作。 它可以完成直方圖均衡、裁剪、量化、鏡像等操作 。大多數操作只工作在L和RGB圖像上。
ImageOps模塊的使用如下:
圖像im_flip為圖像im垂直方向的鏡像。
ImagePath模塊用於存儲和操作二維向量數據。Path對象將被傳遞到ImageDraw模塊的方法中。
ImagePath模塊的使用如下:
ImageSequence模塊包括一個wrapper類,它為圖像序列中每一幀提供了迭代器。
ImageSequence模塊的使用如下:
後面兩次show()函數調用,分別顯示第1張和第11張圖像。
ImageStat模塊計算一張圖像或者一張圖像的一個區域的全局統計值。
ImageStat模塊的使用如下:
ImageTk模塊用於創建和修改BitmapImage和PhotoImage對象中的Tkinter。
ImageTk模塊的使用如下:
這個是我一直不太懂的有沒有大佬能幫我解決一下在線等~急!
PSDraw模塊為Postscript列印機提供基本的列印支持。用戶可以通過這個模塊列印字體,圖形和圖像。
PIL中所涉及的基本概念有如下幾個: 通道(bands)、模式(mode)、尺寸(size)、坐標系統(coordinate system)、調色板(palette)、信息(info)和濾波器(filters)。
每張圖片都是由一個或者多個數據通道構成。PIL允許在單張圖片中合成相同維數和深度的多個通道。
以RGB圖像為例,每張圖片都是由三個數據通道構成,分別為R、G和B通道。而對於灰度圖像,則只有一個通道。
對於一張圖片的通道數量和名稱,可以通過getbands()方法來獲取。getbands()方法是Image模塊的方法,它會返回一個字元串元組(tuple)。該元組將包括每一個通道的名稱。
Python的元組與列表類似,不同之處在於元組的元素不能修改,元組使用小括弧,列表使用方括弧,元組創建很簡單,只需要在括弧中添加元素,並使用逗號隔開即可。
getbands()方法的使用如下:
圖像的模式定義了圖像的類型和像素的位寬。當前支持如下模式:
1:1位像素,表示黑和白,但是存儲的時候每個像素存儲為8bit。
L:8位像素,表示黑和白。
P:8位像素,使用調色板映射到其他模式。
I:32位整型像素。
F:32位浮點型像素。
RGB:3x8位像素,為真彩色。
RGBA:4x8位像素,有透明通道的真彩色。
CMYK:4x8位像素,顏色分離。
YCbCr:3x8位像素,彩色視頻格式。
PIL也支持一些特殊的模式,包括RGBX(有padding的真彩色)和RGBa(有自左乘alpha的真彩色)。
可以通過mode屬性讀取圖像的模式。其返回值是包括上述模式的字元串。
mode 屬性 的使用如下:
通過size屬性可以獲取圖片的尺寸。這是一個二元組,包含水平和垂直方向上的像素數。
mode屬性的使用如下:
PIL使用笛卡爾像素坐標系統,坐標(0,0)位於左上角。注意:坐標值表示像素的角;位於坐標(0,0)處的像素的中心實際上位於(0.5,0.5)。
坐標經常用於二元組(x,y)。長方形則表示為四元組,前面是左上角坐標。例如:一個覆蓋800x600的像素圖像的長方形表示為(0,0,800,600)。
調色板模式 ("P")使用一個顏色調色板為每個像素定義具體的顏色值
使用info屬性可以為一張圖片添加一些輔助信息。這個是字典對象。載入和保存圖像文件時,多少信息需要處理取決於文件格式。
info屬性的使用如下:
對於將多個輸入像素映射為一個輸出像素的幾何操作,PIL提供了4個不同的采樣濾波器:
NEAREST:最近濾波。 從輸入圖像中選取最近的像素作為輸出像素。它忽略了所有其他的像素。
BILINEAR:雙線性濾波。 在輸入圖像的2x2矩陣上進行線性插值。注意:PIL的當前版本,做下采樣時該濾波器使用了固定輸入模板。
BICUBIC:雙立方濾波。 在輸入圖像的4x4矩陣上進行立方插值。注意:PIL的當前版本,做下采樣時該濾波器使用了固定輸入模板。
ANTIALIAS:平滑濾波。 這是PIL 1.1.3版本中新的濾波器。對所有可以影響輸出像素的輸入像素進行高質量的重采樣濾波,以計算輸出像素值。在當前的PIL版本中,這個濾波器只用於改變尺寸和縮略圖方法。
注意:在當前的PIL版本中,ANTIALIAS濾波器是下采樣 (例如,將一個大的圖像轉換為小圖) 時唯一正確的濾波器。 BILIEAR和BICUBIC濾波器使用固定的輸入模板 ,用於固定比例的幾何變換和上采樣是最好的。Image模塊中的方法resize()和thumbnail()用到了濾波器。
resize()方法的定義為:resize(size, filter=None)=> image
resize()方法的使用如下:
對參數filter不賦值的話,resize()方法默認使用NEAREST濾波器。如果要使用其他濾波器可以通過下面的方法來實現:
thumbnail ()方法的定義為:im.thumbnail(size, filter=None)
thumbnail ()方法的使用如下:
這里需要說明的是,方法thumbnail()需要保持寬高比,對於size=(200,200)的輸入參數,其最終的縮略圖尺寸為(182, 200)。
對參數filter不賦值的話,方法thumbnail()默認使用NEAREST濾波器。如果要使用其他濾波器可以通過下面的方法來實現: