我读取了一个文件,其中有多行用np.loadtxt
表示文件名
例如,txt文件内容为:
000914_0017_01_0017_P00_01.tifresize.jpg
000925_0017_01_0006_P00_01.tifresize.jpg
000919_0017_01_0012_P00_01.tifresize.jpg
此txt文件具有文件名split_file_name
。
我使用for循环对每个文件名进行解码,并对每个图像进行如下处理:
for file_name in list(np.loadtxt(split_file_name, dtype=bytes)):
file_name.decode("utf-8")
# other processing...
list(np.loadtxt(split_file_name, dtype=bytes))
的输出是:
[b'000914_0017_01_0017_P00_01.tifresize.jpg',
b'000925_0017_01_0006_P00_01.tifresize.jpg',
b'000919_0017_01_0012_P00_01.tifresize.jpg']
但是,当文件分割文件名中只有一行时,如下所示:
000914_0017_01_0017_P00_01.tifresize.jpg
使用np.loadtxt()
后,输出为:
array(b'000914_0017_01_0017_P00_01.tifresize.jpg', dtype='|S40')
在这种情况下使用list(np.loadtxt(split_file_name, dtype=bytes))
,
它失败了
TypeError: iteration over a 0-d array.
原因是在np.loadtxt
之后,它返回一个只有一个长字符串的numpy数组对象,但是list()不能将其直接转换为只包含一个b'000914_0017_01_0017_P00_01.tifresize.jpg'
的列表
我应该如何确保它只适用于一行txt文件?你知道吗
您可以使用tolist:
更新:
您还可以使用flatten将其扩展/改进到以下方面:
这也适用于loadtxt:
相关问题 更多 >
编程相关推荐