我先简述一下我遇到的问题:
我在Window下写了一个txt文件保存图片的索引路径(一行保存一张图的索引),当我把txt文件拷贝到Linux上,打开txt进行图片索引的时候报错不能加载图片,当时我还以为是我的移动硬盘(保存图片)没有挂载上去,后来我新建一个txt文件,复制黏贴一张图片的索引路径,然后就能成功加载图片了…
import os
import glob
file = "five"
dataset = "test"
img_dir = "H:/rgb-piglet/%s/%s/"%(file,dataset)
with open("H:/rgb-piglet/%s/%s.txt"%(file,dataset),"w") as f:
for i in glob.glob(img_dir+"*.jpg"):
dirs = os.path.basename(i)
print(os.path.basename(i))
f.write("/media/wuzhou/Gap/rgb-piglet/%s/%s/"%(file,dataset)+dirs+'\n')
#f.writelines("/media/wuzhou/Gap/rgb-piglet/test/"+dirs)
以上是我在Window上打开txt进行写入的操作代码(根据需要,每行的末尾都会+“\n”)
但是Linux上进行txt的读行操作的时候,每个一行读出的字符串末尾都会带着“\n”
我分析的原因是Window下的换行符的字符编码和Linux下的字符编码有区别(我认为这是个bug!)
Window系统
在Window下“\r”、“\n”都能实现换行的功能,两种格式保存的txt文件用notepad++软件打开
软件操作:Notepad++ >>>视图 >>>显示符号>>>显示所有符号
显而易见的区别:“\r”格式存储的字符是CR,“\n”格式存储CRLF
Linux系统
这是我从Linux系统上拷贝下来的一个txt文件,换行的字符是LF,可以看出跟Window有明显的区别
解决方法
-
我自己用的方法的是,在Linux打开txt(gedit软件),然后复制内容(Ctrl+C),全选(Ctrl+A),重新黏贴内容(Ctrl+V),保存(Ctrl+S),亲测有效
-
其他方法参考下面的参考文章,里面提出的方法我没有试过,不做评论,over!