如何在python的Windows文件路径字符串中去除双反斜杠?

8 浏览
0 Comments

如何在python的Windows文件路径字符串中去除双反斜杠?

我有一个字典:

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

我对它进行迭代:

for item in my_dictionary:
    PDF = r'C:\Users\user\Desktop\File_%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:\\Users\\user\\Desktop\\File_055123.pdf'

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

0
0 Comments

在Python的Windows文件路径字符串中,双反斜杠的出现是因为Python将其表示为给用户看的方式。在每个双反斜杠"\\"中,第一个反斜杠是用来转义第二个反斜杠,以表示一个实际的反斜杠。例如,如果有变量a等于r'raw s\tring'和b等于'raw s\\tring'(没有'r'和显式的双反斜杠),那么它们都表示为'raw s\\tring'。

需要注意的是,当你打印这个字符串时,你会看到它作为路径中使用的样子,只有一个反斜杠:

>>> a = r'raw s\tring'
>>> b = 'raw s\\tring'
>>> a
'raw s\\tring'
>>> b
'raw s\\tring'

在这个打印的字符串中,"\t"并不表示一个制表符,它是一个反斜杠"\\"后面跟着字母"t"。

否则,如果一个字符串没有'r'前缀并且只有一个反斜杠,它会转义它后面的字符,使其计算跟在后面的"t"等于制表符:

>>> t = 'not raw s\tring'  # 这里'\t'表示制表符
>>> t
'not raw s\tring'
>>> print(t)  # 将打印一个制表符(而不是's\tring'中的字母't')
not raw s       ring

所以在PDF路径+文件名中:

>>> item = 'xyz'
>>> PDF = r'C:\Users\user\Desktop\File_%s.pdf' % item
>>> PDF         # 字符串的表示形式,也显示在错误消息中
'C:\\Users\\user\\Desktop\\File_xyz.pdf'
>>> print(PDF)  # "as used"
C:\Users\user\Desktop\File_xyz.pdf

关于转义序列的更多信息,请参考这里的转义序列表。还可以参考__str__ vs __repr__

在问题中提到的路径中没有"d"这个字符:'C:\\Users\\user\\Desktop\\File_055123.pdf'。可能已经被编辑删除了。

对不起,但这并不是一个有帮助的回答。那么如果双斜杠是问题的原因,那么如何解决呢?

这里的回答是:你不需要解决它,因为它已经没问题了。

为什么每个人都在硬编码他们的路径?

0
0 Comments

在Python中,双反斜杠是由于使用了原始字符串(raw string)r''。这是因为反斜杠\可能会转义一些字符。

例如:

>>> strs = "c:\desktop\notebook"
>>> print strs                #这里print函数认为\n是换行符
c:\desktop
otebook
>>> strs = r"c:\desktop\notebook"  #使用r''可以转义\
>>> print strs
c:\desktop\notebook
>>> print repr(strs)   #输出strs的实际内容
'c:\\desktop\\notebook'

在上面的示例中,如果像>>> strs这样显示strs,你会得到c:\\desktop\\notebook。print函数不会显示转义后的双斜杠\\。

如果你想要在Windows文件路径字符串中去掉双斜杠,可以使用replace()方法来替换双斜杠为单斜杠。以下是一个示例:

>>> path = r'C:\\Users\\user\\Desktop\\File_%s.pdf'
>>> path = path.replace('\\\\', '\\')
>>> print(path)
C:\Users\user\Desktop\File_%s.pdf

通过使用replace()方法,我们将双斜杠替换为单斜杠,从而得到了我们想要的Windows文件路径字符串。

0
0 Comments

有时候在Windows系统中,Python文件路径字符串中的反斜杠会导致问题。这个问题的原因是反斜杠在Python中被视为转义字符,因此如果我们想要在字符串中使用反斜杠,需要使用两个反斜杠表示一个真正的反斜杠。但是,这很容易导致代码可读性下降,并且容易出错。

为了避免这个问题,我们可以使用其他类型的斜杠来代替反斜杠。在Windows系统中,正斜杠也可以作为路径分隔符使用,并且不会被视为转义字符。因此,我们可以将路径字符串中的反斜杠替换为正斜杠来解决这个问题。

下面是一个示例代码,展示了如何解决这个问题:

PDF = 'C:/Users/user/Desktop/File_%s.pdf' %item

通过使用正斜杠替换反斜杠,我们可以确保路径字符串被正确解析,而不需要使用双反斜杠。这样可以提高代码的可读性,并且减少错误的发生。

希望这个解决方法能够帮助你解决在Python中处理Windows文件路径字符串时出现的双反斜杠问题。

0