3

我的脚本通过将文件路径与文件类型后缀连接起来来创建要导出的文件。例如,

int = 3
print r"C:\Test\\" + str(int) + ".jpg"

这返回C:\Test\\3.jpg

我认为因为我在开头包含了“r”,所以我不需要在结尾添加双反斜杠,因为它会被视为原始字符串。但以下不起作用:

int = 3
print r"C:\Test\" + str(int) + ".jpg"

...大概是因为 Python 在结束引号之前看到了一个转义字符。那么'r'有什么意义呢?虽然我的文件在导出时保存在正确的位置,但我不喜欢打印命令在测试之后给我两个反斜杠(例如 C:\Test\3.jpg),而它只是在 C 之后给我一个反斜杠:

请问如何在文件路径中添加一个反斜杠?

4

3 回答 3

6

不要尝试使用字符串操作来构建文件路径。Pythonos.path为此提供了模块:

import os.path
i = 3
print os.path.join("C:\Test", str(i) + ".jpg")

这将确保正确构建路径。

(另外,不要调用 integer int,因为它会影响内置int()函数。)

于 2012-12-11T10:51:37.017 回答
5

即使在原始字符串中,字符串引号也可以用反斜杠转义,但反斜杠保留在字符串中;例如,r"\""是由两个字符组成的有效字符串文字:反斜杠和双引号;r"\"不是有效的字符串文字(即使是原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义后面的引号字符)。另请注意,后跟换行符的单个反斜杠被解释为这两个字符作为字符串的一部分,而不是作为续行符。

来源

所以,它不会那样工作。如果您想使用原始字符串,但有一个尾随反斜杠,则需要在之后单独添加:

>>> r'C:\Test' + '\\'
'C:\\Test\\'

或者,在您的情况下,您也可以只使用字符串格式来插入您的值:

>>> r'C:\Test\{0}.jpg'.format(i)
'C:\\Test\\1.jpg'

或者,您用于os.path.join构建路径:

>>> os.path.join(r'C:\Test', str(i) +'.jpg')
'C:\\Test\\1.jpg'
于 2012-12-11T10:54:50.560 回答
0

首先,不要调用整数 int,因为它会影响内置的 int() 函数。
使用 os.path 是一个非常聪明的方法

import os.path
i = 3
print os.path.join("C:\Test", str(i) + ".jpg")
#C:\Test\3.jpg

OR U必须使用字符串来操作来构建文件路径:

_prefix = 'C:\Test'
i = 3
print _prefix + '\\' + str(i) + '.jpg'
#C:\Test\3.jpg
于 2012-12-11T12:12:20.740 回答