我正在尝试使用Python 2.7中的路径
这就是我在主要课程中要做的事情:
program = MyProgram()
program.doSomething('C:\Eclipse\workspace\MyProgram\files\12345678_Testing1_ABCD005_Static_2214_File12.txt')
在函数doSomething(filePath)
内,字符串看起来像这样:
所以有一种特殊字符加上一些字符被完全删除。什么可能导致这个问题?
答案 0 :(得分:2)
\
是Python中的转义字符。 According to docs,您已创建包含\f ASCII Formfeed (FF)
字符的字符串。
字符串文字可以包含在匹配的单引号(
'
)或中 双引号("
)。它们也可以包含在匹配的组中 三个单引号或双引号(通常称为 三重引用的字符串)。 反斜杠(\
)字符用于转义 否则具有特殊含义的字符,例如换行符, 反斜杠本身,或引用字符。
使用双斜杠(\\
- 来转义转义字符)或使用原始字符串文字(r"some\path"
)。
字符串文字可以选择以字母“r”或“R”为前缀; 这些字符串称为原始字符串,并使用不同的规则 解释反斜杠转义序列。
答案 1 :(得分:2)
这可能在您的情况下有点过头了,
您可以使用os.path.join
来构建路径。有了这个,你有两个好处:
如上所述,这对你的代码来说可能有点过分了:
import os.path
program = MyProgram()
my_path = os.path.join('C:',
'Eclipse',
'workspace',
'MyProgram',
'files',
'12345678_Testing1_ABCD005_Static_2214_File12.txt')
program.doSomething(my_path)
答案 2 :(得分:1)
反斜杠似乎在创造一个特殊的角色。在反斜杠后面放置一个额外的反斜杠(作为逃避字符)应该修复它。
program = MyProgram()
program.doSomething('C:\\Eclipse\\workspace\\MyProgram\\files\\12345678_Testing1_ABCD005_Static_2214_File12.txt')
答案 3 :(得分:0)
我们可以通过将转换为原始字符串来转换包含转义字符的Windows路径名。
如果您想对字符串进行硬编码,则可以使用
mypath = r'C:\this_is_my_path'
和python将忽略上面字符串中的'\ t'。
但是如果你有一个包含转义字符的字符串变量,那么你可以使用下面提到的方法。
def string2RawString(string):
rawString = ''
for i in string.split('\\'):
rawString = rawString+("%r"%i).strip("'")+"\\"
return rawString
答案 4 :(得分:0)
在文件路径前使用r
program.doSomething(r'C:\Eclipse\workspace\MyProgram\files\12345678_Testing1_ABCD005_Static_2214_File12.txt')