glob函數python glob函數遍歷目錄

python圖像處理初學者求助

Pillow是Python里的圖像處理庫(PIL:Python Image Library),提供了了廣泛的文件格式支持,強大的圖像處理能力,主要包括圖像儲存、圖像顯示、格式轉換以及基本的圖像處理操作等。

創新互聯公司主打移動網站、網站制作、做網站、網站改版、網絡推廣、網站維護、域名申請、等互聯網信息服務,為各行業提供服務。在技術實力的保障下,我們為客戶承諾穩定,放心的服務,根據網站的內容與功能再決定采用什么樣的設計。最后,要實現符合網站需求的內容、功能與設計,我們還會規劃穩定安全的技術方案做保障。

1)使用 Image 類

PIL最重要的類是 Image class, 你可以通過多種方法創建這個類的實例;你可以從文件加載圖像,或者處理其他圖像, 或者從 scratch 創建。

要從文件加載圖像,可以使用open( )函數,在Image模塊中:

1

2

from PIL import Image

im = Image.open("E:/photoshop/1.jpg")

加載成功后,將返回一個Image對象,可以通過使用示例屬性查看文件內容:

1

2

3

print(im.format, im.size, im.mode)

('JPEG', (600, 351), 'RGB')

format 這個屬性標識了圖像來源。如果圖像不是從文件讀取它的值就是None。size屬性是一個二元tuple,包含width和height(寬度和高度,單位都是px)。 mode 屬性定義了圖像bands的數量和名稱,以及像素類型和深度。常見的modes 有 “L” (luminance) 表示灰度圖像, “RGB” 表示真彩色圖像, and “CMYK” 表示出版圖像。

如果文件打開錯誤,返回 IOError 錯誤。

只要你有了 Image 類的實例,你就可以通過類的方法處理圖像。比如,下列方法可以顯示圖像:

1

im.show()

2)讀寫圖像

PIL 模塊支持大量圖片格式。使用在 Image 模塊的 open() 函數從磁盤讀取文件。你不需要知道文件格式就能打開它,這個庫能夠根據文件內容自動確定文件格式。要保存文件,使用 Image 類的 save() 方法。保存文件的時候文件名變得重要了。除非你指定格式,否則這個庫將會以文件名的擴展名作為格式保存。

加載文件,并轉化為png格式:

1

2

3

4

5

6

7

8

9

10

11

12

13

"Python Image Library Test"

from PIL import Image

import os

import sys

for infile in sys.argv[1:]:

f,e = os.path.splitext(infile)

outfile = f +".png"

if infile != outfile:

try:

Image.open(infile).save(outfile)

except IOError:

print("Cannot convert", infile)

save() 方法的第二個參數可以指定文件格式。

3)創建縮略圖

縮略圖是網絡開發或圖像軟件預覽常用的一種基本技術,使用Python的Pillow圖像庫可以很方便的建立縮略圖,如下:

1

2

3

4

5

6

7

# create thumbnail

size = (128,128)

for infile in glob.glob("E:/photoshop/*.jpg"):

f, ext = os.path.splitext(infile)

img = Image.open(infile)

img.thumbnail(size,Image.ANTIALIAS)

img.save(f+".thumbnail","JPEG")

上段代碼對photoshop下的jpg圖像文件全部創建縮略圖,并保存,glob模塊是一種智能化的文件名匹配技術,在批圖像處理中經常會用到。

注意:Pillow庫不會直接解碼或者加載圖像柵格數據。當你打開一個文件,只會讀取文件頭信息用來確定格式,顏色模式,大小等等,文件的剩余部分不會主動處理。這意味著打開一個圖像文件的操作十分快速,跟圖片大小和壓縮方式無關。

4)圖像的剪切、粘貼與合并操作

Image 類包含的方法允許你操作圖像部分選區,PIL.Image.Image.crop 方法獲取圖像的一個子矩形選區,如:

1

2

3

4

# crop, paste and merge

im = Image.open("E:/photoshop/lena.jpg")

box = (100,100,300,300)

region = im.crop(box)

矩形選區有一個4元元組定義,分別表示左、上、右、下的坐標。這個庫以左上角為坐標原點,單位是px,所以上訴代碼復制了一個 200×200 pixels 的矩形選區。這個選區現在可以被處理并且粘貼到原圖。

1

2

region = region.transpose(Image.ROTATE_180)

im.paste(region, box)

當你粘貼矩形選區的時候必須保證尺寸一致。此外,矩形選區不能在圖像外。然而你不必保證矩形選區和原圖的顏色模式一致,因為矩形選區會被自動轉換顏色。

5)分離和合并顏色通道

對于多通道圖像,有時候在處理時希望能夠分別對每個通道處理,處理完成后重新合成多通道,在Pillow中,很簡單,如下:

1

2

r,g,b = im.split()

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

對于split( )函數,如果是單通道的,則返回其本身,否則,返回各個通道。

6)幾何變換

對圖像進行幾何變換是一種基本處理,在Pillow中包括resize( )和rotate( ),如用法如下:

1

2

out = im.resize((128,128))

out = im.rotate(45) # degree conter-clockwise

其中,resize( )函數的參數是一個新圖像大小的元祖,而rotate( )則需要輸入順時針的旋轉角度。在Pillow中,對于一些常見的旋轉作了專門的定義:

1

2

3

4

5

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)

7)顏色空間變換

在處理圖像時,根據需要進行顏色空間的轉換,如將彩色轉換為灰度:

1

2

cmyk = im.convert("CMYK")

gray = im.convert("L")

8)圖像濾波

Python中如何遍歷指定目錄下的所有文件?

例如:在C:\TDDOWNLOAD目錄下有a.txt、b.txt兩個文件,另有\sub1子文件夾,C:\TDDOWNLOAD\sub1下又有c.txt、d.txt兩個文件。 1. os.walk os.walk()返回一個三元素的tuple:當前路徑、子文件夾名稱、文件列表。 import os def fun( path ):... for root, dirs, files in os.walk( path ):... for fn in files:... print root, fn... fun( r'C:\TDDOWNLOAD' )C:\TDDOWNLOAD a.txtC:\TDDOWNLOAD b.txtC:\TDDOWNLOAD\sub1 c.txtC:\TDDOWNLOAD\sub1 d.txt 2. glob.glob glob.glob()只接受一個參數,這個參數既代有路徑,又代有匹配模式,返回值為一個列表。注意,glob.glob()無法直接穿透子文件夾,需要自己處理: def fun( path ):... for fn in glob.glob( path + os.sep + '*' ): # '*'代表匹配所有文件... if os.path.isdir( fn ): # 如果結果為文件夾... fun( fn ) # 遞歸... else:... print fn... fun( r'C:\TDDOWNLOAD' )C:\TDDOWNLOAD\a.txtC:\TDDOWNLOAD\b.txtC:\TDDOWNLOAD\sub1\c.txtC:\TDDOWNLOAD\sub1\d.txt '*'為匹配模式,代表匹配所有文件,只有這樣才能將子文件夾查出來,以便遞歸深入,探查下一層的文件。

自學Python:查看文件夾及子目錄所有文件路徑

使用路徑對象glob()函數和rglob()函數,可以查看指定路徑下的文件和子文件夾,兩者的區別在于,glob()函數只進行一級查找,而rglob()函數會進行多級查找。

from pathlib import Path

p = Path('d:\\文件夾\\')

r = p.glob('*')

for i in r:

print(i) #顯示glob()函數的結果

print('-' * 25) #這里是分割線

r = p.rglob('*')

for i in r:

print(i)#顯示rglob()函數的結果

查看對應結果如下:

d:\11\11.txt

d:\11\r.mp3

d:\11\t.mp3

d:\11\tp1000

d:\11\文件夾

-------------------------

d:\11\11.txt

d:\11\r.mp3

d:\11\t.mp3

d:\11\tp1000

d:\11\文件夾

d:\11\文件夾\文檔.txt

________________END______________

用python實現一個本地文件搜索功能。

import re,os

import sys

def filelist(path,r,f):

"""

function to find the directions and files in the given direction

according to your parameters,fileonly or not,recursively find or not.

"""

file_list = []

os.chdir(path)

filename = os.listdir(path)

if len(filename) == 0:

os.chdir(os.pardir)

return filename

if r == 1: ##

if f == 0: # r = 1, recursively find directions and files. r = 0 otherwise.

for name in filename: # f = 1, find files only, f = 0,otherwise.

if os.path.isdir(name): ##

file_list.append(name)

name = os.path.abspath(name)

subfile_list = filelist(name,r,f)

for n in range(len(subfile_list)):

subfile_list[n] = '\t'+subfile_list[n]

file_list += subfile_list

else:

file_list.append(name)

os.chdir(os.pardir)

return file_list

elif f == 1:

for name in filename:

if os.path.isdir(name):

name = os.path.abspath(name)

subfile_list = filelist(name,r,f)

for n in range(len(subfile_list)):

subfile_list[n] = '\t'+subfile_list[n]

file_list += subfile_list

else:

file_list.append(name)

os.chdir(os.pardir)

return file_list

else:

print 'Error1'

elif r == 0:

if f == 0:

os.chdir(os.pardir)

return filename

elif f == 1:

for name in filename:

if os.path.isfile(name):

file_list.append(name)

os.chdir(os.pardir)

return file_list

else:

print 'Error2'

else:

print 'Error3'

'''

f = 0:list all the files and folders

f = 1:list files only

r = 1:list files or folders recursively,all the files and folders in the current direction and subdirection

r = 0:only list files or folders in the current direction,not recursively

as for RE to match certern file or dirction,you can write yourself, it is easier than the function above.Just use RE to match the result,if match,print;else,pass

"""

python調用sac--參考SAC手冊

#this python file is used to read SAC file

import os

import sys

import subprocess

import glob

from obspy.core import read

from PyQt5.QtWidgetsimport *

from PyQt5.QtGuiimport *

from PyQt5.QtCoreimport *

from PyQt5import QtCore, QtGui, QtWidgets

'''import os 是導入標準庫os,利用其中的API。

sys模塊包含了與Python解釋器和它的環境有關的函數。

glob是python自帶的一個文件操作模塊,用它查找符合目的的文件,類似于Windows下的文件搜索,支持通配符操作

subprocess允許創建一個新的進程讓其執行另外的程序,并與它進行通信,獲取標準的輸入、標準輸出、標準錯誤以及返回碼等

'''

def run(path):

# path = QtWidgets.QFileDialog.getExistingDirectory(None, "Select File Directory to Save File", "")

fileName = os.listdir(path)

os.chdir(path)

os.putenv("SAC_DISPLAY_COPYRIGHT", '0')

for namein fileName:

# name = i

#for file in glob.glob("*.SAC"):

#glob.glob是匹配所有符合條件的文件,并將其以list的形式返回

#os.putenv("SAC_DISPLAY_COPYRIGHT", '0') #os.putenv(‘環境變量名稱’, ‘環境變量值’)

#p = subprocess.Popen(['sac'], stdin=subprocess.PIPE)#Popen表示調用sac

#stdin指向鍵盤輸入,standard input

#Python 3 利用 subprocess 實現管道( pipe )交互操作讀/寫通信

# s = "r " + name + " \n"? ###這里應該是傳入某個文件,所以應該有個讀取文件的按鈕

# s += "qdp off\n"

# s += "ch allt (0 - 1,o) iztype IO \n"? #修改發震時刻為零

# s += "rmean; rtrend; taper \n"? #去均值,去線性趨勢,去尖滅

# s += "bp c 0.05 10 n 4 p 2 \n"? #帶通濾波

# s += "w over\n"

# s += "r *BHN *BHE \n"? #分量旋轉,讀入N、E分量,rot并修改頭段變量

# s += "rotate to gcp"

# s += "w .BHR .BHT"

# s += "r *.BHR\n"

# s += "ch KCMPNM BHR\n"

# s += "w over\n"

# s += "r *.BHT\n"

# s += "ch KCMPNM BHT\n"

# s += "w over\n"

# s += "p \n"

# s += "saveimg 2009.ps\n"

# s += "q\n"

? ? s ="r " + name +" \n"

? ? #s += "ppk p 3 a m\n"

? ? s +="w over\n"

? ? s +="q \n"

? ? # p.communicate(s.encode()) #通過p.communicate() 將命令s.encode() 傳遞給sac,實現sac的操作

? ? subprocess.Popen(['sac'], stdin=subprocess.PIPE).communicate(s.encode())

Python 常用的標準庫以及第三方庫有哪些

5個常用的Python標準庫:

1、os:提供了不少與操作系統相關聯的函數庫

os包是Python與操作系統的接口。我們可以用os包來實現操作系統的許多功能,比如管理系統進程,改變當前路徑,改變文件權限等。但要注意,os包是建立在操作系統的平臺上的,許多功能在Windows系統上是無法實現的。另外,在使用os包中,要注意其中的有些功能已經被其他的包取代。

我們通過文件系統來管理磁盤上儲存的文件。查找、刪除、復制文件以及列出文件列表等都是常見的文件操作。這些功能通常可以在操作系統中看到,但現在可以通過Python標準庫中的glob包、shutil包、os.path包以及os包的一些函數等,在Python內部實現。

2、sys:通常用于命令行參數的庫

sys包被用于管理Python自身的運行環境。Python是一個解釋器,也是一個運行在操作系統上的程序。我們可以用sys包來控制這一程序運行的許多參數,比如說Python運行所能占據的內存和CPU,Python所要掃描的路徑等。另一個重要功能是和Python自己的命令行互動,從命令行讀取命令和參數。

3、random:用于生成隨機數的庫

Python標準庫中的random函數,可以生成隨機浮點數、整數、字符串,甚至幫助你隨機選擇列表序列中的一個元素,打亂一組數據等。

4、math:提供了數學常數和數學函數

標準庫中,Python定義了一些新的數字類型,以彌補之前的數字類型可能的不足。標準庫還包含了random包,用于處理隨機數相關的功能。math包補充了一些重要的數學常數和數學函數,比如pi、三角函數等等。

5、datetime:日期和時間的操作庫

日期和時間的管理并不復雜,但容易犯錯。Python的標準庫中對日期和時間的管理頗為完善,你不僅可以進行日期時間的查詢和變換,還可以對日期時間進行運算。通過這些標準庫,還可以根據需要控制日期時間輸出的文本格式。

除此之外,Python還有很多第三方庫,了解更多可移步:oldboyedu

分享標題:glob函數python glob函數遍歷目錄
文章URL:http://m.kartarina.com/article26/hjocjg.html

成都網站建設公司_創新互聯,為您提供網站建設關鍵詞優化網站制作網站內鏈標簽優化網站設計公司

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都做網站
主站蜘蛛池模板: 国产亚洲精品无码专区| 亚洲人片在线观看天堂无码 | 在线观看免费无码专区| 最新国产AV无码专区亚洲| 亚洲中文无码a∨在线观看| 乱人伦人妻中文字幕无码久久网| 无码午夜人妻一区二区三区不卡视频| 无码中文2020字幕二区| 亚洲国产精品无码AAA片| 人妻少妇无码视频在线| 无码不卡av东京热毛片| 久久午夜无码免费 | 国产亚洲精久久久久久无码AV| 人妻av无码一区二区三区| 免费看无码特级毛片| 国产精品无码亚洲一区二区三区| 久久老子午夜精品无码怎么打| 国产精品毛片无码| 丰满少妇人妻无码专区| 99无码人妻一区二区三区免费| 亚洲AV日韩AV永久无码绿巨人| 亚洲AV蜜桃永久无码精品| 无码丰满熟妇浪潮一区二区AV | 久久亚洲精品无码av| 亚洲va成无码人在线观看 | 国精无码欧精品亚洲一区| 精品无码国产污污污免费网站国产| 好了av第四综合无码久久| 日韩放荡少妇无码视频| 亚洲成a人无码亚洲成av无码| 无码人妻精品一区二区三区蜜桃 | 亚洲av无码一区二区三区网站| 亚洲成?v人片天堂网无码| mm1313亚洲精品无码又大又粗| 日韩经典精品无码一区| 国产乱子伦精品无码专区| 亚洲中文字幕无码一区二区三区| 国产亚洲?V无码?V男人的天堂 | 人妻丰满熟妇A v无码区不卡| 东京热HEYZO无码专区| 亚洲精品无码你懂的网站|