對於GIS分析領域的開發工程師,遍歷文件夾中的shp文件是一個常見的需求。Python提供了一種非常便捷的方法來實現這個功能。本文將從以下幾個方面進行講解:
一、`os`模塊的使用
`os`模塊是Python內置的與操作系統相關的模塊。使用`os`模塊的`walk`函數可以遍歷指定目錄及其所有子目錄下的所有文件和文件夾。下面是一個遍歷目錄下所有文件的示例代碼:
import os def getAllFiles(path): fileList = [] for root, dirs, files in os.walk(path): for file in files: fileList.append(os.path.join(root, file)) return fileList path = "your/dir/path" allFiles = getAllFiles(path) print(allFiles)
在這段代碼中,我們使用了`os.walk`函數,函數返回一個三元組`(root, dirs, files)`,其含義如下:
- `root`: str類型,表示當前遍歷的文件夾路徑
- `dirs`: list類型,當前文件夾下所有子目錄的列表
- `files`: list類型,當前文件夾下所有文件的列表
遍歷到文件後,我們可以通過判斷文件的後綴名來篩選出shp文件。下面是一個篩選shp文件的示例代碼:
def getShpFiles(path): fileList = [] for root, dirs, files in os.walk(path): for file in files: if file.endswith(".shp"): fileList.append(os.path.join(root, file)) return fileList path = "your/dir/path" shpFiles = getShpFiles(path) print(shpFiles)
二、使用`glob`模塊
`glob`模塊提供了一種更加簡潔的方法來獲取符合指定模式的文件列表。下面是一個使用`glob`模塊獲取shp文件列表的示例代碼:
import glob path = "your/dir/path/**/*.shp" shpFiles = glob.glob(path, recursive=True) print(shpFiles)
在上面的代碼中,我們使用了`**`來表示遞歸匹配任意子目錄。如果不需要遞歸匹配,可以將該部分省略。另外,`glob`函數的`recursive`參數用來控制是否遞歸匹配,默認為False。
三、使用`pathlib`模塊
`pathlib`是Python 3.4引入的一個路徑操作模塊,提供了一種面向對象的路徑操作方式。使用`pathlib`模塊可以更加直觀地操作路徑和文件。下面是一個使用`pathlib`模塊獲取shp文件列表的示例代碼:
import pathlib path = pathlib.Path("your/dir/path") shpFiles = list(path.glob("**/*.shp")) print(shpFiles)
在這個代碼中,我們使用了`Path`類來表示路徑。`glob`函數返回一個生成器,我們可以使用`list`函數將其轉變為列表。
四、總結
本文介紹了三種不同的方法來遍歷文件夾中的shp文件,分別使用了`os`模塊、`glob`模塊和`pathlib`模塊。不同的方法各有特點,開發者可以根據具體情況選擇適合自己的方法。
原創文章,作者:HAXFI,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/373772.html