Python:os.join.path()

Python:os.join.path(),python,string,Python,String,我使用os.join.path()将图像加载到文件夹中。但我发现,在某些情况下,在定义另一个函数时,该函数无法给出准确的路径。例如: def Myfuncion(something) desiredPath = os.path.join('myPath','apple.jpeg') #desiredPath = os.path.normpath(os.path.join('myPath','apple.jpeg')) print desiredPath ret

我使用os.join.path()将图像加载到文件夹中。但我发现,在某些情况下,在定义另一个函数时,该函数无法给出准确的路径。例如:

def Myfuncion(something)
    desiredPath = os.path.join('myPath','apple.jpeg')
    #desiredPath = os.path.normpath(os.path.join('myPath','apple.jpeg')) 

    print desiredPath
    return
当我实现该功能时,路径的打印结果是:

 myPath\apple.jpeg
加载图像是非法的。但是os.path.join()在Pythonconsole中运行良好

如何使该函数定义中生成的路径具有双反斜杠

另外,需要注意的是,os.path.normpath有时也不能很好地工作。例如:

 os.path.normpath('myPath\apple')
它应该给出以下结果:

 myPath\\apple
但相反,它会导致:

 'myPath\x07pple'

为什么???

\a
等同于
\x07
。(请参阅中的转义序列部分。)

您需要将
\
转义为反斜杠:

>>> '\\a'
'\\a'
>>> print('\\a')
\a
或者,使用原始字符串文字:

>>> r'\a'
'\\a'
>>> print(r'\a')
\a

您知道用双反斜杠(称为转义)定义的字符串在打印时只显示一个反斜杠吗?而
'\x07'
等同于
'\a'
?是的!我只使用print进行调试,因为我发现路径上的图像没有正确加载。我使用Image.open()加载图像,然后将其保存到另一个文件夹请独立研究反斜杠在字符串中的作用。@TigerhawkT3我知道了。非常感谢。但是python加载图像时使用单下划线的路径是非法的。@jingweimo,我的观点是
os.path.join('myPath','apple.jpeg')=='myPath\\apple.jpeg'
(换句话说,
os.path.join('myPath','apple.jpeg'))=='myPath\apple.jpeg'
@jingweimo路径加上一个反斜杠是合法的,但是如果有特殊字符,比如
\n
\t
\a
\u
,那么使用\\或/(甚至在Windows上)或
os.path.join()会产生问题
@jingweimo,请检查文档的转义序列部分。我在答案中提供了文档的链接。谢谢!如何处理特殊字符的情况?
>>> r'\a'
'\\a'
>>> print(r'\a')
\a