file - 在 python Windows 文件路径字符串中,如何删除双反斜杠?

  显示原文与译文双语对照的内容
0 0

我有一个字典:

my_dictionary = {"058498":"table", "064165":"pen", "055123":"pencil"}

我对它做迭代:

for item in my_dictionary:
    PDF = r'C:UsersuserDesktopFile_%s.pdf' %item
    doIt(PDF)
def doIt(PDF):
    part = MIMEBase('application', "octet-stream")
    part.set_payload( open(PDF,"rb").read() )

但我得到一个错误:

IOError: [Errno 2] No such file or directory: 'C:UsersuserDesktopFile_055123.pdf'

它找不到我文件。 为什么它认为有双反斜杠在文件路径?

时间:原作者:5个回答

0 0

双反斜杠不是错,Python prints/represents它给用户的方式。 如果 a = r'raw string'b = 'raw string'( 没有'r'和显式双斜杠),则它们都表示为 'raw string'.

>>> a = r'raw string'
>>> b = 'raw string'
>>> a
'raw string'
>>> b
'raw string'

btw,你的代码显然编辑并且不匹配实际与你发布由于有另一个明显区别在错误信息和文件名:

有以下几种类型:

PDF = r'C:UsersuserDesktopFile_%s.pdf' %item

但输出显示:

'C:UsersuserDesktopFiled_055123.pdf'

请注意,使用额外 d 在文件名 Filed_vs File_. 错误信息可能会来自你已经编辑了一部分。

原作者:
0 0

双反斜线是由于 r,原始字符串:

r'C:UsersuserDesktopFile_%s.pdf' ,

因为它被用来 可能会转义一些字符。

>>> strs = "c:desktopnotebook"
>>> print strs                #here print thinks that n in notebook is the newline char
c:desktop
otebook
>>> strs = r"c:desktopnotebook"  #using r'' escapes the 
>>> print strs
c:desktopnotebook
>>> print repr(strs)   #actual content of strs
'c:desktopnotebook'
原作者:
0 0

却没有出现。 双反斜杠只是说反斜杠的计算机的方式。 是的,我知道这有点奇怪,不过你这样考虑一下为了表示特殊字符,斜线被选作一个转义符( e .g 。 n表示换行,而不是反斜杠字符后跟n 字符) 。 但实际上如果你接着想打印( 或使用) 反斜杠( 后面有多个字符),但是不想计算机会将该尝试视为转义字符? 在这种情况下我们转义反斜杠本身,这意味着我们使用双反斜杠,以便计算机能够理解它是单个反斜杠。

它是自动完成你而言由于 r你之前添加的字符串。

原作者:
...