python - 训练 '\x00' s 和 TypeError : stat() argument 1 must be encoded string without null bytes, 不是 str

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

如何解决这个问题?

最佳答案

您可以使用 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之前。

关于python - 训练 '\x00' s 和 TypeError : stat() argument 1 must be encoded string without null bytes, 不是 str,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46744007/

相关文章:

c++ - 带新行的字符串仅在一行中保存在文件中

javascript:拆分字符串(但保留空格)

python - 在python中拆分句子

python - 使用自然三次样条外推时的曲率

python - 建立多元回归模型抛出错误 : `Pandas data cast to numpy dtype of object. Check input data with np.asarray(data).`

python - 如何将 'IN'约束应用于django模型的字段

r - 将字符串数据集转换为矩阵

python - 将 numpy 数组传递给 Cython

ios - 从 Swift 中的字符串中删除 "\"(反斜杠)

java - 如何检查字符串是否包含特定范围内的数字,例如java中的11到26