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

时间:2018-04-01 13:56:00

标签: python linux windows io

我目前从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])

1 个答案:

答案 0 :(得分: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