转换代码以将Windows中的文件读取到linux

问题描述 投票:0回答:1

我目前从cv2 resize收到一个错误,表明文件中没有任何内容。它在Windows上工作正常,但我正在努力找出需要做的事情(除了路径名称的更改)以便在Linux上工作。

path1 ='C:/Users/L/Software/Data/channels/ch3'

listing = os.listdir(path1)

ch3_matrix = array([array(cv2.resize(cv2.imread(path1 + '\\' + im2,0),(55,55))).flatten()
            for im2 in listing])
python linux windows io
1个回答
1
投票

问题是你正在构建的最终路径:

path1 + '\\' + im2

其中path1是你的基目录,im2是图像文件名。这样做(使用字符串连接)可能会导致问题非常快,并且通常不鼓励。

我建议使用os.path.join或更新的pathlib模块,它们都与平台无关:

import os

BASE_PATH = 'C:/Users/L/Software/Data/channels/ch3'

images = os.listdir(BASE_PATH)
ch3_matrix = array([
    array(cv2.resize(cv2.imread(os.path.join(BASE_PATH, image), 0), (55, 55))).flatten()
    for image in images
])

要么

import pathlib

BASE_PATH = pathlib.Path('C:/Users/L/Software/Data/channels/ch3')

images = os.listdir(BASE_PATH)
ch3_matrix = array([
    array(cv2.resize(cv2.imread(str(BASE_PATH / image), 0), (55, 55))).flatten()
    for image in images
])

要使您的代码在Linux上运行,您只需要更改BASE_PATH

© www.soinside.com 2019 - 2024. All rights reserved.