训练'\ x00'和TypeError:stat()参数1必须是没有空字节的编码字符串,而不是str

时间:2017-10-14 11:27:55

标签: python string split path

我有一个json文件,我存储了几个文件的路径:

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

现在的问题是当我在python中读取文件并保存数组中的每一行时,我在行尾有\x00\x00\x00\x00\x00。我试过str.rstrip()str.rstrip('\n'),但没有运气。

enter image description here

当我尝试使用os.path.exists()(如下面的

)检查路径的存在时,这会导致问题
if os.path.exists(path_list[0]):
       img1 = self.loader(path_list[0])
        ........

我在os.path.exists()

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

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

您可以使用rstrip('\x00'),也可以rstrip('\x00\n')同时删除'\n'\x00'

>>> 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'

话虽这么说,我会问自己,文件中首先出现了NULL字符。

您可以使用以下方式批量处理path_list列表:

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

在处理文件名时使用path_list