如何在反斜杠后管理带数字的路径?

时间:2013-12-21 07:27:48

标签: python python-3.x path

我在Windows 7上使用Python 3.3。

这是问题所在。

如果我的文件名以数字开头,则更改错误。

例如:

>>> 'E:\DOCUMENTS\1.jpg'
'E:\\DOCUMENTS\x01.jpg'

我知道我可以通过添加转义反斜杠手动修复它。

>>> 'E:\DOCUMENTS\\1.jpg'
'E:\\DOCUMENTS\\1.jpg'

或者在字符串前添加“r”。

>>> r'E:\DOCUMENTS\1.jpg'
'E:\\DOCUMENTS\\1.jpg'

但我不能手动完成,因为我不知道路径是什么。

有哪些可能的解决方案?

更新: 正如@Blender建议的那样,我打算发布代码。当我重写它时,我意识到最初有一个错误,这导致我得出一个错误的结论。据我所知,上述情况,当需要动态生成具有路径原始的字符串时,不会发生。它只能在手动写入路径时发生。

import os
from PIL import Image as PIL
from PIL import ImageTk

def searchforimages(dir):
    imagelist=[]
    for file in os.listdir(dir):
        fileabspath=os.path.join(dir,file)
        try:
            # the problem was here originally, but now it is ok.
            # since "fileabspath" get passes as a raw string,
            # so there is no problem for PIL.open() to open it
            PIL.open(fileabspath)
            imagelist.append(fileabspath)
        except:
            continue
    return imagelist

searchforimages('E:\photos')

#the problem only happens, when path is written manually
path='E:\photos\1.jpg'
PIL.open(path)

所以现在我只想确认一下,当有必要用动态路径创建一个字符串时,问题永远不会发生,是吗?

1 个答案:

答案 0 :(得分:1)

\仅在字符串文字中使用时才重要。

>>> path = input() # `a\n\1` in the following line is typed by me (user).
a\n\1
>>> path
'a\\n\\1'