如何解决如何在文件夹中创建图像及其名称列表
我正在使用以下代码创建带有 tif 扩展名的图像文件列表。代码的当前结果是一个包含 .tif 文件地址的列表。
raster_list=[]
def getFiles(path):
for file in os.listdir(path):
if file.endswith(".tif"):
raster_list.append(os.path.join(path,file))
getFiles(fpath)
print(raster_list)
len(raster_list)
结果:
['C:/dataset/test\\ras1.tif','C:dataset/test\\ras2.tif','C:/dataset/test\\ras3.tif','C:/dataset/test\\ras4.tif','C:/dataset/test\\ras5.tif']
如何修改代码以创建两个列表 a) 带有 .tif 的文件名 b) 文件名。这是示例:
raster_list = ['ras1.tif','ras2.tif','ras3.tif','ras4.tif','ras5.tif' ]
raster_name = ['ras1','ras2','ras3','ras4','ras5']
from os import path
raster_list=[]
def getFiles(path):
for file in os.listdir(path):
if file.endswith(".tif"):
raster_list.append(file) #remove the os.join,just take the file name
getFiles(fpath)
raster_names = [path.splitext(x)[0] for x in raster_list]
print(raster_list)
print(raster_names)
结果:
['ras1.tif','ras5.tif']
['ras1','ras5']
解决方法
就我个人而言,我会使用 pathlib
,因为它独立于操作系统且可靠:
>>> from pathlib import Path
>>> files = ['/tmp/ras1.tif','/tmp/ras2.tif','/tmp/ras3.tif']
>>> [Path(file).name for file in files]
['ras1.tif','ras2.tif','ras3.tif']
>>> [Path(file).stem for file in files]
['ras1','ras2','ras3']
,
对于您想要的第一个列表,您可以在列表的每个术语上使用函数 split("") 并使用 split 创建的列表的最后一个元素。 对于第二个,您可以只使用您创建的第一个列表并在“.”上拆分,您只需保存列表的第一个元素。
L = ['C:/dataset/test\\ras1.tif','C:dataset/test\\ras2.tif','C:/dataset/test\\ras3.tif','C:/dataset/test\\ras4.tif','C:/dataset/test\\ras5.tif']
raster_list = []
raster_name = []
for i in L:
a = i.split("\\")[1]
raster_list.append(a)
raster_name.append(a.split(".")[0])
print(raster_list,raster_name)
但是您也可以尝试不将路径包含在类似的 while_list 中:
raster_list=[]
def getFiles(path):
for file in os.listdir(path):
if file.endswith(".tif"):
raster_list.append(file) #remove the os.join,just take the file name
getFiles(fpath)
print(raster_list)
len(raster_list)
您可以将两者合并以获得此效果:
raster_list=[]
raster_names=[]
def getFiles(path):
for file in os.listdir(path):
if file.endswith(".tif"):
raster_list.append(file)
raster_names.append(file.split(".")[0])
getFiles(fpath)
print(raster_list,raster_names)
,
用'\'分割,取最后一个元素并将其附加到第一个列表中, 然后用“.”分割,取第一个元素并将其附加到第二个列表?
或者,您可以使用这些内置函数:https://docs.python.org/3/library/os.path.html
,您可以使用 os.path() 方法来实现您想要的。
import os
raster_list = []
raster_name = []
def getFiles(path):
for file in os.listdir(path):
if file.endswith(".tif"):
raster_list.append(os.path.basename(file))
raster_name.append(os.path.splitext(file)[0])
getFiles(fpath)
print(raster_list)
print(raster_name)
len(raster_list)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。