【发布时间】:2025-12-23 12:45:06
【问题描述】:
在以下方法中,我不确定 .join(data_directory, d) 和 .join(ROOT_PATH, "TrafficSigns/Training") 会产生什么结果。具体来说,我不知道 .join() 如何处理这两个参数。
def load_data(data_directory):
directories = [d for d in os.listdir(data_directory)
if os.path.isdir(os.path.join(data_directory, d))]
labels = []
images = []
for d in directories:
label_directory = os.path.join(data_directory, d)
file_names = [os.path.join(label_directory, f)
for f in os.listdir(label_directory)
if f.endswith(".ppm")]
for f in file_names:
images.append(skimage.data.imread(f))
labels.append(int(d))
return images, labels
ROOT_PATH = "/your/root/path"
train_data_directory = os.path.join(ROOT_PATH, "TrafficSigns/Training")
test_data_directory = os.path.join(ROOT_PATH, "TrafficSigns/Testing")
images, labels = load_data(train_data_directory)
快速说明,我正在从 TrafficSign 文件夹(包含两个文件夹,Training 和 Testing)中加载图像。
【问题讨论】:
-
请记住这是
os.path.join,而不是str.join。os.path.join采用一个或多个路径并使用os.sep将它们连接在一起 -
但是为什么在参数中同时包含 data_directory 和 d 呢?为什么不只将 d 作为参数?拥有它们有什么意义?它们如何相互作用?
-
data_directory是某个目录,比如/path/to/。listdir(data_directory)是该目录中所有内容(文件、其他目录等)的可迭代对象。所以path.join(data_directory, d)只是data_directory的完整路径。假设有一些文件file。那么d是'file',data_directory是'/path/to/',path.join(data_directory, file)是/path/to/file
标签: python python-3.x join