我在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)
所以现在我只想确认一下,当有必要用动态路径创建一个字符串时,问题永远不会发生,是吗?
答案 0 :(得分:1)
\
仅在字符串文字中使用时才重要。
>>> path = input() # `a\n\1` in the following line is typed by me (user).
a\n\1
>>> path
'a\\n\\1'