當前位置:首頁 » 編程語言 » python調用wget

python調用wget

發布時間: 2023-09-06 18:02:09

Ⅰ docker容器下搭建python環境

1)進入容笑伏器

docker exec -it 容器id(或容器名) /bin/bash

查看當前操作系統cat /etc/issue

Debian GNU/Linux 10 \n \l

這里查到薯升亮的是Debian系統(不是ubuntu, 也不是centos),這里yum是沒有的,所以不能用yum安裝了,這里用apt-get代替yum

先執行更新apt-get

apt-get update

2)在當前容器目錄下(自己的虛擬機:/usr/local/tomcat)

mkdir python3

cd python3/

執行命令:wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

解壓:tar -xvf Python-3.6.8.tgz

cd Python-3.6.8/

然後執行:./configure --prefix=/usr/local/tomcat/python3,會報錯:configure: error: no acceptable C compiler found in $PATH

apt-get 安裝依賴包

這個是因為缺少gcc相關依賴包,使用apt-get代替yum安裝相關依賴包

apt-get -y install gcc automake autoconf libtool make

apt-get -y install make*

apt-get -y install zlib*

apt-get -y install openssl libssl-dev

apt-get install sudo

make編譯安裝

./configure --prefix=/usr/local/tomcat/python3 --with-ssl

make

make install

最後:添加軟鏈接

添加python3軟鏈接

ln -s /var/jenkins_home/python3/bin/python3.6 /usr/bin/python3

添加pip3軟鏈接

ln -s /var/jenkins_home/python3/bin/pip3 /usr/bin/pip3

註:

ssl問題

如果pip3安裝的時候遇到報ssl相關問題:pip is configured with locations that require TLS/SSL, however the ssl mole in Python is not available.

這個是因為缺少ssl依賴包,網上的解決方案是yum install openssl-devel ,由於Debian系統沒有數寬yum,用apt-get安裝

apt-get -y install openssl libssl-dev

安裝完成之後只能解決系統自帶的python2對應的pip安裝問題,無法解決python3的pip3安裝問題。

解決辦法:上面編譯的時候需加上參數 --with-ssl

./configure --prefix=/usr/local/tomcat/python3 --with-ssl

重新執行make和make install 就可以了

Ⅱ python 多進程和多線程配合

由於python的多線程中存在PIL鎖,因此python的多線程不能利用多核,那麼,由於現在的計算機是多核的,就不能充分利用計算機的多核資源。但是python中的多進程是可以跑在不同的cpu上的。因此,嘗試了多進程+多線程的方式,來做一個任務。比如:從中科大的鏡像源中下載多個rpm包。
#!/usr/bin/pythonimport reimport commandsimport timeimport multiprocessingimport threadingdef download_image(url):
print '*****the %s rpm begin to download *******' % url
commands.getoutput('wget %s' % url)def get_rpm_url_list(url):
commands.getoutput('wget %s' % url)
rpm_info_str = open('index.html').read()

regu_mate = '(?<=<a href=")(.*?)(?=">)'
rpm_list = re.findall(regu_mate, rpm_info_str)

rpm_url_list = [url + rpm_name for rpm_name in rpm_list] print 'the count of rpm list is: ', len(rpm_url_list) return rpm_url_
def multi_thread(rpm_url_list):
threads = [] # url = 'https://mirrors.ustc.e.cn/centos/7/os/x86_64/Packages/'
# rpm_url_list = get_rpm_url_list(url)
for index in range(len(rpm_url_list)): print 'rpm_url is:', rpm_url_list[index]
one_thread = threading.Thread(target=download_image, args=(rpm_url_list[index],))
threads.append(one_thread)

thread_num = 5 # set threading pool, you have put 4 threads in it
while 1:
count = min(thread_num, len(threads)) print '**********count*********', count ###25,25,...6707%25

res = [] for index in range(count):
x = threads.pop()
res.append(x) for thread_index in res:
thread_index.start() for j in res:
j.join() if not threads:
def multi_process(rpm_url_list):
# process num at the same time is 4
process = []
rpm_url_group_0 = []
rpm_url_group_1 = []
rpm_url_group_2 = []
rpm_url_group_3 = [] for index in range(len(rpm_url_list)): if index % 4 == 0:
rpm_url_group_0.append(rpm_url_list[index]) elif index % 4 == 1:
rpm_url_group_1.append(rpm_url_list[index]) elif index % 4 == 2:
rpm_url_group_2.append(rpm_url_list[index]) elif index % 4 == 3:
rpm_url_group_3.append(rpm_url_list[index])
rpm_url_groups = [rpm_url_group_0, rpm_url_group_1, rpm_url_group_2, rpm_url_group_3] for each_rpm_group in rpm_url_groups:
each_process = multiprocessing.Process(target = multi_thread, args = (each_rpm_group,))
process.append(each_process) for one_process in process:
one_process.start() for one_process in process:
one_process.join()# for each_url in rpm_url_list:# print '*****the %s rpm begin to download *******' %each_url## commands.getoutput('wget %s' %each_url)
def main():
url = 'https://mirrors.ustc.e.cn/centos/7/os/x86_64/Packages/'
url_paas = 'http://mirrors.ustc.e.cn/centos/7.3.1611/paas/x86_64/openshift-origin/'
url_paas2 ='http://mirrors.ustc.e.cn/fedora/development/26/Server/x86_64/os/Packages/u/'

start_time = time.time()
rpm_list = get_rpm_url_list(url_paas) print multi_process(rpm_list) # print multi_thread(rpm_list)
#print multi_process()
# print multi_thread(rpm_list)
# for index in range(len(rpm_list)):
# print 'rpm_url is:', rpm_list[index]
end_time = time.time() print 'the download time is:', end_time - start_timeprint main()123456789101112131415161718

代碼的功能主要是這樣的:
main()方法中調用get_rpm_url_list(base_url)方法,獲取要下載的每個rpm包的具體的url地址。其中base_url即中科大基礎的鏡像源的地址,比如:http://mirrors.ustc.e.cn/centos/7.3.1611/paas/x86_64/openshift-origin/,這個地址下有幾十個rpm包,get_rpm_url_list方法將每個rpm包的url地址拼出來並返回。
multi_process(rpm_url_list)啟動多進程方法,在該方法中,會調用多線程方法。該方法啟動4個多進程,將上面方法得到的rpm包的url地址進行分組,分成4組,然後每一個組中的rpm包再最後由不同的線程去執行。從而達到了多進程+多線程的配合使用。
代碼還有需要改進的地方,比如多進程啟動的進程個數和rpm包的url地址分組是硬編碼,這個還需要改進,畢竟,不同的機器,適合同時啟動的進程個數是不同的。

Ⅲ 樹莓派怎麼樣用 Python 控制 GPIO 來發送串口指令

python GPIO
1、先安裝python-dev,輸入以下指令。

sudo
apt-get install python-dev

2、安裝RPi.GPIO,依次輸入以下指令。

1)下載:$ wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.5.3a.tar.gz

2)解壓縮:$ tar xvzf RPi.GPIO-0.5.3a.tar.gz

3)進入解壓之後的目錄 :$ cd RPi.GPIO-0.5.3a
4)啟動安裝 :$ sudo python setup.py install

3、例子:

[python] view plain
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
# BOARD編號方式,基於插座引腳編號
GPIO.setmode(GPIO.BOARD)
# 輸出模式
GPIO.setup(11, GPIO.OUT)

while True:
GPIO.output(11, GPIO.HIGH)
time.sleep(1)
GPIO.output(11, GPIO.LOW)
time.sleep(1)

4、執行:
sudo python led.py

5、說明:
1)GPIO.setmode(GPIO.BOARD),採用插座引腳編號方式。
2)由於採用插座引腳編號方式,此處的11腳相當於BCM2835寄存器編號方式的引腳11。

python GPIO
1、說明:
WiringPi是應用於樹莓派平台的GPIO控制庫函數,WiringPi遵守GUN Lv3。wiringPi使用C或者C++開發並且可以被其他語言包轉,例如python、ruby或者PHP等。

wiringPi包括一套gpio控制命令,使用gpio命令可以控制樹莓派GPIO管腳。用戶可以利用gpio命令通過shell腳本控制或查詢
GPIO管腳。wiringPi是可以擴展的,可以利用wiringPi的內部模塊擴展模擬量輸入晶元,可以使用
MCP23x17/MCP23x08(I2C
或者SPI)擴展GPIO介面。另外可通過樹莓派上的串口和Atmega(例如arino等)擴展更多的GPIO功能。另外,用戶可以自己編寫擴展模
塊並把自定義的擴展模塊集成到wiringPi中。WiringPi支持模擬量的讀取和設置功能,不過在樹莓派上並沒有模擬量設備。但是使用
WiringPi中的軟體模塊卻可以輕松地應用AD或DA晶元。

Ⅳ python 如何使用wget

你可以使用 subprocess 模塊,檢查執行 subprocess.call("Your-Command") 後的返回值:


Ⅳ 如何使用python繪制gwas分析中的曼哈頓圖和qq圖

曼哈頓圖

將示例數據下載下來:

wget https://raw.githubusercontent.com/ShujiaHuang/geneview-data/master/GOYA.csv

先簡單地查看一下數據的格式:

chrID,rsID,position,pvalue

1,rs3094315,742429,0.144586
1,rs3115860,743268,0.230022
1,rs12562034,758311,0.644366
1,rs12124819,766409,0.146269
1,rs4475691,836671,0.458197
1,rs28705211,890368,0.362731
1,rs13303118,908247,0.22912
1,rs9777703,918699,0.37948
1,rs3121567,933331,0.440824

一共是4列(逗號分隔),分別為:[1]染色體編號,[2]SNP rs 編號,[3] 位點在染色體上的位置,[4]顯著性差異程度(pvalue)。在本例曼哈頓圖中我們只需要使用第1,3和4列;而QQ圖則只需要第4列——pvalue。

下面先從繪制曼哈頓圖開始。我們先將需要的數據讀取到一個列表中,可以這樣做:

import csv

data = []
with open("GOYA.csv") as f:
f_csv = csv.reader(f)
headers = next(f_csv)
data = [[row[0], int(row[2]), float(row[3])] for row in f_csv]

現在GOYA.csv中的數據就都存放在data列表中了,由於Python在讀取文件中數據時,都是以string類型存放,因此對於第3和第4列的數據有必要事先把做點類型轉換。

接下來,調用geneview中的曼哈頓圖函數。

import matplotlib.pyplot as plt
from geneview.gwas import manhattanplot
ax = manhattanplot(data, xlabel="Chromosome", ylabel="-Log10(P-value)") # 這就是Manhattan plot的函數
plt.show()

只需這樣的一句代碼就能創建一個漂亮的曼哈頓圖,有必要再次指出的是,geneview是以matplotlib為基礎開發出來的,所創建的圖形對象實際上仍屬於matplotlib,geneview內部自定義了很多圖形風格,同時封裝了大量只屬於基因組數據的圖表類型,但圖形的輸出格式以及界面顯示都仍和matplotlib一樣,因此在這里我們使用matplotlib.pyplot的show()函數(上例中:plt.show())將所繪制出來的曼哈頓圖顯示出來。如果要將圖形保存下來,則只需執行`plt.savefig("man.png")`,這樣就會在該目錄下生成一個名為『man.png』png格式的曼哈頓圖,若是要存為pdf格式,則只需將所要保存的文件名後綴改成『.pdf』(plt.savefig("man.pdf"))就可以了。下面這些格式:emf,
eps, pdf, png, jpg, ps, raw, rgba, svg,
svgz等都是支持的,至於最新的還有多少種,還請參照matplotlib文檔中說明。

此外,geneview中的每個畫圖函數都有著足夠的靈活性,我們也可以根據自己的需要做一些調整,比如:

xtick = ['1', '2','3','4','5','6','7','8','9','10','11','12','13','14','16','18', '20','22']

manhattanplot(data,
xlabel="Chromosome", # 設置x軸名字
ylabel="-Log10(P-value)", # 設置y軸名字
xtick_label_set = set(xtick), # 限定橫坐標軸上的刻度顯示
s=40, # 設置圖中散點的大小
alpha=0.5, # 調整散點透明度
color="#f28b1e,#9a0dea,#ea0dcc,#63b8ff", # 設置新的顏色組合
)

實現新的顏色組合、限定x軸上的刻度顯示和散點大小的調節。甚至還可以將散點改為線:

manhattanplot(data,
xlabel="Chromosome", # 設置x軸名字
ylabel="-Log10(P-value)", # 設置y軸名字
xtick_label_set = set(xtick), # 限定橫坐標軸上的刻度顯示
alpha=0.5, # 調整散點透明度
color="#f28b1e,#9a0dea,#ea0dcc,#63b8ff", # 設置新的顏色組合
kind="line"
)

其它方面的調整請查看geneview文檔中的相關說明。

Q-Q圖

qq圖只需用到上例中的pvalue那一列:
import csv

import matplotlib.pyplot as plt
from geneview.gwas import qqplot

pvalue=[]
with open("GOYA.csv") as f:
f_csv = csv.reader(f)
headers = next(f_csv)
pvalue = [float(row[3]) for row in f_csv]

ax = qqplot(pvalue, color="#00bb33", xlabel="Expected p-value(-log10)", ylabel="Observed p-value(-log10)") # Q-Q 圖
plt.show()

同樣,也可以根據自己的需要對改圖進行相關的調整。

以上,便是如何使用Python來製作Manhattan圖和QQ圖的方法,geneview的集成函數簡化了這樣的一個過程。

另外,如果你也看過丹麥人的這個GOYA研究,就會發現實際以上的兩個圖和其文章中的基本是一致的,當然我自己做了些數據清洗的操作,結果上仍然會有些許的不同。雖然此刻下結論還有點為時尚早,但總的來講,我應該也可以通過這個數據集比較順利的將其結果重復出來了。

最後,附上利用geneview畫曼哈頓圖和QQ圖的代碼:

(1)曼哈頓圖:

(2)QQ圖:

Ⅵ Python包管理工具pip的安裝和使用

Python有兩個著名的包管理工具easy_install.py和pip。在Python2.7的安裝包中,easy_install.py是默認安裝的,而pip需要我們手動安裝。

方法1:利用常用curl獲取

>>後面是指定獲取的pip腳本的名字,也可以是curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

方法2:利用wget獲取,先要安裝wget

備註:看網上還有利用easy_install安裝pip,但是我嘗試了並沒有成功

原因是 Python.org sites 終止支持TLS1.0和1.1版本,TLS需要>=1.2

參考: https://stackoverflow.com/questions/49768770/not-able-to-install-python-packages-ssl-tlsv1-alert-protocol-version

主要命令:

所有命令中,最重要的兩個命令是install和uninstall。

pip支持四種方式安裝python包。

從PyPI安裝一個包

安裝一個全局區域的包,一般需要sudo許可權。在mac系統上,即使是管理員也無法安裝,自從OS X El Capitan及以後的版本包含了一套安全技術(System Integrity Protection簡稱為SIP)來防止惡意軟體修改系統保護區域。具體可參考SIP。因此,我們有時候需要將PyPI包安裝到用戶區,這個時候,可以用.

pip在升級軟體包之前會自動卸載舊的軟體包。

可以將所有需要安裝的包放入一個requirements.txt文件中,然後可以一次安裝。requirements.txt 文件的每一行都要表明安裝的內容,而且盡量不要依賴文件中指定包的前後安裝順序。

從git安裝

從svn安裝

從一個分支安裝

還有很多其他的包安裝功能,但是上面的已經滿足了大部分需求。其他的請參考 文檔 。

pip uninstall可以卸載大部分的包,除了一下兩種情況

使用方式主要有兩種:

卸載單個包

卸載多個包

pip check用來驗證已安裝的包是否有兼容的依賴性問題。

上面的結果說明matplotlib包有兩個依賴包沒有安裝。

pip search用來搜索名字或者摘要中包含搜索關鍵字的PyPI包。

選項只有一個,就是指定PyPI的url,默認url為 https://pypi.python.org/pypi

例如,search frida

以下兩者都可以用,結果同上。

pip list命令會按照字典序排列列舉已安裝的包,包括可編輯的包。

主要有如下選項:

輸出格式:

legacy:將要被廢棄

freeze

columns

json

當某些時候debug的時候,需要提供一個完整的python環境,python freeze提供了此功能,它能夠輸出機器上python環境的快照(所有已安裝的包)。

下面是freeze命令的選項:

輸出用戶區安裝的前5個安裝包:

pip show可以用來顯示每個包的具體信息。show命令只有一個選項 -f,用來顯示安裝包的文件列表。

$ pip show -f|--files packageName

更多命令請參考 文檔

pip默認的index-url是 https://pypi.python.org/pypi/ ,
為了提高速度,我們可以更改pip源為國內的阿里雲源。更改方法如下:

創建配置文件

添加阿里源

pip.conf內容如下:

Ⅶ 怎麼樣在Python編程中使用Pillow來處理圖像

安裝
剛接觸Pillow的朋友先來看一下Pillow的安裝方法,在這里我們以Mac OS環境為例: (1)、使用 pip 安裝 Python 庫。pip 是 Python 的包管理工具,安裝後就可以直接在命令行一站式地安裝/管理各種庫了(pip 文檔)。

$ wget http://pypi.python.org/packages/source/p/pip/pip-0.7.2.tar.gz$ tar xzf pip-0.7.2.tar.gz$ cd pip-0.7.2$ python setup.py install

(2)、使用 pip 下載獲取 Pillow:

$ pip install pillow

(3)、安裝過程中命令行出現錯誤提示:」error: command 『clang' failed with exit status
1」。上網查閱,發現需要通過 Xcode 更新 Command Line Tool。於是打開
Xcode->Preferences->Downloads-Components選項卡。咦?竟然沒了 Command Line
Tools。再查,發現 Xcode 5 以上現在需要用命令行安裝:

$ xcode-select —install

系統會彈出安裝命令行工具的提示,點擊安裝即可。
此時再 pip install pillow,就安裝成功了。
pip freeze 命令查看已經安裝的 Python 包,Pillow 已經乖乖躺那兒了。
好了,下面開始進入教程~
Image類
Pillow中最重要的類就是Image,該類存在於同名的模塊中。可以通過以下幾種方式實例化:從文件中讀取圖片,處理其他圖片得到,或者直接創建一個圖片。
使用Image模塊中的open函數打開一張圖片:

>>> from PIL import Image>>> im = Image.open("lena.ppm")

如果打開成功,返回一個Image對象,可以通過對象屬性檢查文件內容

>>> from __future__ import print_function>>> print(im.format, im.size, im.mode)

PPM (512, 512) RGB

format屬性定義了圖像的格式,如果圖像不是從文件打開的,那麼該屬性值為None;size屬性是一個tuple,表示圖像的寬和高(單位為像素);mode屬性為表示圖像的模式,常用的模式為:L為灰度圖,RGB為真彩色,CMYK為pre-press圖像。
如果文件不能打開,則拋出IOError異常。
當有一個Image對象時,可以用Image類的各個方法進行處理和操作圖像,例如顯示圖片:

>>> im.show()

ps:標准版本的show()方法不是很有效率,因為它先將圖像保存為一個臨時文件,然後使用xv進行顯示。如果沒有安裝xv,該函數甚至不能工作。但是該方法非常便於debug和test。(windows中應該調用默認圖片查看器打開)
讀寫圖片
Pillow庫支持相當多的圖片格式。直接使用Image模塊中的open()函數讀取圖片,而不必先處理圖片的格式,Pillow庫自動根據文件決定格式。
Image模塊中的save()函數可以保存圖片,除非你指定文件格式,那麼文件名中的擴展名用來指定文件格式。
圖片轉成jpg格式

from __future__ import print_functionimport os, sysfrom PIL import Imagefor infile in sys.argv[1:]: f, e = os.path.splitext(infile) outfile = f + ".jpg" if infile != outfile: try: Image.open(infile).save(outfile) except IOError: print("cannot convert", infile)

save函數的第二個參數可以用來指定圖片格式,如果文件名中沒有給出一個標準的圖像格式,那麼第二個參數是必須的。
創建縮略圖

from __future__ import print_functionimport os, sysfrom PIL import Imagesize = (128, 128)for infile in sys.argv[1:]: outfile = os.path.splitext(infile)[0] + ".thumbnail" if infile != outfile: try: im = Image.open(infile) im.thumbnail(size) im.save(outfile, "JPEG") except IOError: print("cannot create thumbnail for", infile)

必須指出的是除非必須,Pillow不會解碼或raster數據。當你打開一個文件,Pillow通過文件頭確定文件格式,大小,mode等數據,餘下數據直到需要時才處理。
這意味著打開文件非常快,與文件大小和壓縮格式無關。下面的程序用來快速確定圖片屬性:
確定圖片屬性

from __future__ import print_functionimport sysfrom PIL import Imagefor infile in sys.argv[1:]: try: with Image.open(infile) as im: print(infile, im.format, "%dx%d" % im.size, im.mode) except IOError: pass

裁剪、粘貼、與合並圖片
Image類包含還多操作圖片區域的方法。如crop()方法可以從圖片中提取一個子矩形
從圖片中復制子圖像

box = im.() #直接復制圖像box = (100, 100, 400, 400)region = im.crop(box)

區域由4-tuple決定,該tuple中信息為(left, upper, right, lower)。 Pillow左邊系統的原點(0,0)為圖片的左上角。坐標中的數字單位為像素點,所以上例中截取的圖片大小為300*300像素^2。
處理子圖,粘貼回原圖

region = region.transpose(Image.ROTATE_180)im.paste(region, box)

將子圖paste回原圖時,子圖的region必須和給定box的region吻合。該region不能超過原圖。而原圖和region的mode不需要匹配,Pillow會自動處理。
另一個例子

Rolling an imagedef roll(image, delta): "Roll an image sideways" image = image.() #復制圖像 xsize, ysize = image.size delta = delta % xsize if delta == 0: return image part1 = image.crop((0, 0, delta, ysize)) part2 = image.crop((delta, 0, xsize, ysize)) image.paste(part2, (0, 0, xsize-delta, ysize)) image.paste(part1, (xsize-delta, 0, xsize, ysize)) return image

分離和合並通道

r, g, b = im.split()im = Image.merge("RGB", (b, g, r))

對於單通道圖片,split()返回圖像本身。為了處理單通道圖片,必須先將圖片轉成RGB。
幾何變換
Image類有resize()、rotate()和transpose()、transform()方法進行幾何變換。
簡單幾何變換

out = im.resize((128, 128))out = im.rotate(45) # 順時針角度表示

置換圖像

out = im.transpose(Image.FLIP_LEFT_RIGHT)out = im.transpose(Image.FLIP_TOP_BOTTOM)out = im.transpose(Image.ROTATE_90)out = im.transpose(Image.ROTATE_180)out = im.transpose(Image.ROTATE_270)

transpose()和象的rotate()沒有性能差別。
更通用的圖像變換方法可以使用transform()
模式轉換
convert()方法
模式轉換

im = Image.open('lena.ppm').convert('L')

圖像增強
Filter ImageFilter模塊包含很多預定義的增強filters,通過filter()方法使用
應用filters

from PIL import ImageFilterout = im.filter(ImageFilter.DETAIL)

像素點處理
point()方法通過一個函數或者查詢表對圖像中的像素點進行處理(例如對比度操作)。
像素點變換

# multiply each pixel by 1.2out = im.point(lambda i: i * 1.2)

上述方法可以利用簡單的表達式進行圖像處理,通過組合point()和paste()還能選擇性地處理圖片的某一區域。
處理單獨通道

# split the image into indivial bandssource = im.split()R, G, B = 0, 1, 2# select regions where red is less than 100mask = source[R].point(lambda i: i < 100 and 255)# process the green bandout = source[G].point(lambda i: i * 0.7)# paste the processed band back, but only where red was < 100source[G].paste(out, None, mask)# build a new multiband imageim = Image.merge(im.mode, source)

注意到創建mask的語句:

mask = source[R].point(lambda i: i < 100 and 255)

該句可以用下句表示

imout = im.point(lambda i: expression and 255)

如果expression為假則返回expression的值為0(因為and語句已經可以得出結果了),否則返回255。(mask參數用法:當為0時,保留當前值,255為使用paste進來的值,中間則用於transparency效果)
高級圖片增強
對其他高級圖片增強,應該使用ImageEnhance模塊 。一旦有一個Image對象,應用ImageEnhance對象就能快速地進行設置。 可以使用以下方法調整對比度、亮度、色平衡和銳利度。
圖像增強

from PIL import ImageEnhanceenh = ImageEnhance.Contrast(im)enh.enhance(1.3).show("30% more contrast")

動態圖
Pillow支持一些動態圖片的格式如FLI/FLC,GIF和其他一些處於實驗階段的格式。TIFF文件同樣可以包含數幀圖像。
當讀取動態圖時,PIL自動讀取動態圖的第一幀,可以使用seek和tell方法讀取不同鄭

from PIL import Imageim = Image.open("animation.gif")im.seek(1) # skip to the second frametry: while 1: im.seek(im.tell()+1) # do something to imexcept EOFError: pass # end of sequence

當讀取到最後一幀時,Pillow拋出EOFError異常。
當前版本只允許seek到下一鄭為了倒回之前,必須重新打開文件。
或者可以使用下述迭代器類
動態圖迭代器類

class ImageSequence: def __init__(self, im): self.im = im def __getitem__(self, ix): try: if ix: self.im.seek(ix) return self.im except EOFError: raise IndexError # end of sequencefor frame in ImageSequence(im): # ...do something to frame...Postscript Printing

Pillow允許通過Postscript Printer在圖片上添加images、text、graphics。

Drawing Postscriptfrom PIL import Imagefrom PIL import PSDrawim = Image.open("lena.ppm")title = "lena"box = (1*72, 2*72, 7*72, 10*72) # in pointsps = PSDraw.PSDraw() # default is sys.stdoutps.begin_document(title)# draw the image (75 dpi)ps.image(box, im, 75)ps.rectangle(box)# draw centered titleps.setfont("HelveticaNarrow-Bold", 36)w, h, b = ps.textsize(title)ps.text((4*72-w/2, 1*72-h), title)ps.end_document()

更多讀取圖片方法
之前說到Image模塊的open()函數已經足夠日常使用。該函數的參數也可以是一個文件對象。
從string中讀取

import StringIOim = Image.open(StringIO.StringIO(buffer))

從tar文件中讀取

from PIL import TarIOfp = TarIO.TarIO("Imaging.tar", "Imaging/test/lena.ppm")im = Image.open(fp)

草稿模式
draft()方法允許在不讀取文件內容的情況下盡可能(可能不會完全等於給定的參數)地將圖片轉成給定模式和大小,這在生成縮略圖的時候非常有效(速度要求比質量高的場合)。
draft模式

from __future__ import print_functionim = Image.open(file)print("original =", im.mode, im.size)im.draft("L", (100, 100))print("draft =", im.mode, im.size)

Ⅷ 如何在CentOS6上安裝Python2.7和Python3.3

一、安裝檢查

一般在centos中都會默認裝一個python,版本不一定,如果是2.7,則安裝時只裝3.3就可以了(現在最新已經到3.6了,可以裝一個3.6版本的)

which python #查看當前centos中使用的python解釋器位置

python --version #查看當前安裝的python版本


二、python的安裝

1.wget相應的python包(https://www.python.org/downloads/source/)

如圖,右鍵-復制鏈接,就可以得到對應的包了。

1.下載get-pip.py
wgethttps://bootstrap.pypa.io/get-pip.py

2.執行命令pythonget-pip.py

3.更新,運行命令
pipinstall-Upip

熱點內容
米思齊編譯失敗怎麼看 發布:2025-03-12 19:26:27 瀏覽:847
sql語句notexists 發布:2025-03-12 19:16:11 瀏覽:59
快手安卓版如何玩 發布:2025-03-12 19:15:26 瀏覽:35
scott資料庫 發布:2025-03-12 19:15:19 瀏覽:872
rom伺服器是什麼 發布:2025-03-12 19:10:27 瀏覽:61
我給你改個密碼叫什麼 發布:2025-03-12 19:09:32 瀏覽:673
寬頻密碼在手機上如何更改 發布:2025-03-12 19:07:52 瀏覽:115
python離線安裝pip 發布:2025-03-12 19:06:18 瀏覽:28
超時代加密視頻破解 發布:2025-03-12 19:03:10 瀏覽:95
伺服器怎麼做游戲 發布:2025-03-12 18:57:30 瀏覽:615