2017-10-14 3 views
1

J'ai un fichier JSON où je chemin Stockées dans plusieurs fichiers comme ceci:Formation « x00 » s et TypeError: Argument stat() 1 doit être une chaîne codée sans octets nuls, non str

>> head test_data.json 
data/Benign/P_00004_LEFT_CC.tif 
data/Benign/P_00004_LEFT_MLO.tif 
data/Benign/P_00004_RIGHT_MLO.tif 
data/Benign/P_00018_RIGHT_CC.tif 

maintenant le problème est quand je lis le fichier dans python et enregistre chaque ligne dans un tableau que j'ai suivi \x00\x00\x00\x00\x00 à la fin de la ligne. J'ai essayé str.rstrip() et str.rstrip('\n') mais n'ai eu aucune chance.

enter image description here

C'est problème à l'origine lorsque je tente de vérifier l'existence de chemins à l'aide os.path.exists() comme suit

if os.path.exists(path_list[0]): 
     img1 = self.loader(path_list[0]) 
     ........ 

J'obtiens l'erreur à os.path.exists()

TypeError: stat() argument 1 must be encoded string without null bytes, not str 

Comment puis-je résoudre ce problème?

+1

Qu'en est-il de 'rstrip ('\ x00')'? –

+2

En outre s'il vous plaît prochaine fois copier-coller le code dans la question (vous pouvez également ajouter une image * facultative *). De cette façon, il est plus facile pour nous de vous aider. –

Répondre

1

Vous pouvez utiliser rstrip('\x00'), ou vous pouvez utiliser rstrip('\x00\n') pour dépouiller les deux '\n' et \x00' simultanément:

>>> s = 'data/Benign/P_00004_LEFT_CC.tif\x00\x00\x00\x00\x00\n' 
>>> s.rstrip('\n\x00') 
'data/Benign/P_00004_LEFT_CC.tif' 

Cela étant dit, je me demande comment les caractères NULL se produisent dans le fichier en premier lieu.

Vous pouvez traiter en lots la liste des path_list en utilisant:

path_list = [item.rstrip('\n\x00') for item in path_list] 

avant d'utiliser le path_list lors du traitement des noms de fichiers.