python - Konverteringskode til at læse filer i Windows til Linux

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg får for øjeblikket en fejl fra cv2 resize, hvilket tyder på, at der ikke er noget i filen. Det fungerer fint på Windows, men jeg kæmper for at finde ud af, hvad der skal gøres (bortset fra en ændring i stienavnet) for det til at arbejde på 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])

Bedste reference


Problemet er den endelige vej du bygger:


path1 + '\' + im2


hvor path1 er din basismappe og im2 billedfilnavnet. At gøre det som dette (med snorforbindelser) kan føre til problemer meget hurtigt og bliver generelt afskrækket.


Jeg vil anbefale at bruge os.path.join eller det nyere pathlib modul til dette, som begge arbejder platformafhængige: [10] [11]


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
])


eller


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
])


For din kode til at arbejde på Linux skal du kun ændre BASE\_PATH.