ValueError: invalid literal for int() with base 10: 'train'之文件路径(Linux代码移植到Windows)

    xiaoxiao2022-07-12  205

    bug的开头总是这样,适逢其会,猝不及防。 笔者在Linux下成功运行的代码移植到Windows下运行报错,Linux和Windows还是有些许细微差别,在此记录一次小坑。欢迎各位同僚留言各种Linux和Windows互相移植出现的bug,希望能总结差异便于移植。

    定位到错误语句,断点调试,发现是Linux与Windows之间正斜杆与反斜杠之间的差异。 因此,在操作正反斜杆时建议先统一正反斜杠,通常Windows会用反斜杠即\,Linux通常会用正斜杠即/。最终建议无论Windows还是Linux下,统一使用正斜杠。

    通过下面代码即可实现:

    file = file.replace('\\', '/');

    关于正反斜杆可以参考: https://blog.csdn.net/lien0906/article/details/80819580 内容如下: 首先,"/“左倾斜是正斜杠,”"右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠,但是现在Windows

    (一)目录中的斜杠们

    python读文件需要输入的目录参数,列出以下例子:

    path = r"C:\Windows\temp\readme.txt"

    path1 = r"c:\windows\temp\readme.txt"

    path2 = “c:\windows\temp\readme.txt”

    path3 = “c:/windows/temp/readme.txt”

    打开文件函数open()中的参数可以是path也可以是path1、path2、path3。

    path:"“为字符串中的特殊字符,加上r后变为原始字符串,则不会对字符串中的”\t"、"\r" 进行字符串转义

    path1:大小写不影响windows定位到文件

    path2:用一个"“取消第二个”“的特殊转义作用,即为”\"

    path3:用正斜杠做目录分隔符也可以转到对应目录,并且在python中path3的方式也省去了反斜杠\转义的烦恼

    (二)正则表达式中的斜杠们

    正则表达式匹配反斜杠"",为什么是"\\“或是 r”\"呢?

    因为在正则表达式中\为特殊符号,为了取消它在正则表达式中的特殊意义需要加一个\就变成了\,但是问题又来了,\也是字符串中的特殊字符,所以又要分别对两个\取消其特殊意义,即为\\。Python中有一个原始字符串操作符,用于那些字符串中出现特殊字符,在原始字符串中,没有转义字符和不能打印的字符。这样就可以取消了\在字符串中的转义功能,即r"\"。

    还有一种可能是文件夹里包含隐藏文件,可以参考: https://blog.csdn.net/aiynmimi/article/details/87170828

    self.image_names += [os.path.join(root, file_path) for file_path in file_list if file_path.endswith('png')]

    判断后缀名解决。

    最新回复(0)