慕的地8271018
2023-09-05 19:47:56
我正在編寫一個腳本,可以自動從我們從 Sentinel 2B 衛星獲得的 zip 文件中提取數據。我需要從 zip 文件中獲取的文件的路徑如下: zipfile.zip/somefolder.SAFE/GRANULE/main_folder/IMG_DATA/它們都是 .jp2 文件,我需要將它們提取到具有以下結構的另一個路徑: my_path/main_folder/我需要保留 zip 文件中的 main_folder 名稱(它因文件而異)。Ziplist 是 zip 文件路徑的列表for i in zipList: if not os.path.exists(basePath + '/Raw_data/' + os.path.basename(i)[:-4]): os.makedirs(basePath + '/Raw_data/' + os.path.basename(i)[:-4]) zipped_file = zipfile.ZipFile(i, 'r') for file in zipped_file.namelist(): if fnmatch.fnmatch(file, "*.jp2"): zipped_file.extract(file, basePath + '/Raw_data/' + os.path.basename(i)[:-4])但這保留了 zip 文件的文件結構。我只想要 .jp2 文件/Raw_data/os.path.basename(i)[:-4]
1 回答

繁星點點滴滴
TA貢獻1803條經驗 獲得超3個贊
我想到了:
for i in zipList:
folder_path = basePath + '/Raw_data/' + os.path.basename(i)[:-4]
if not os.path.exists(folder_path):
os.makedirs(folder_path)
# print(os.path.basename(i))
z = zipfile.ZipFile(i, 'r')
for file in z.namelist():
if fnmatch.fnmatch(file, "*.jp2") and str(file)[-8:-4] in ["_B02", "_B03", "_B04", "_B08"]:
target = open(folder_path + '/' + os.path.basename(file), 'wb')
target.write(z.read(file))
target.close()
z.close()
我必須在該位置創建一個新文件,并將 jp2 文件從 zip 文件復制到其中。
添加回答
舉報
0/150
提交
取消