2016-08-03 285 views
-2

我有一些问题,路径+文件(这是一个函数的输入)的名称。这工作:Python路径和原始字符串

result=r"D:\final\Res.mat" 

这不起作用:

result="D:\\final\\Res.mat" 

我想要做的是以下(但也不起作用[Errno 22] invalid mode ('rb') or filename:):

path = "D:\final" 
nameFile= "Res" 

result=''+ path+ '\\' + nameFile'mat'+'' 

我如何在不使用“”的情况下在名称前面输入“r”?或者,有没有可能将r放在路径的前面?

回答

0

r前缀用于指示您希望将字符串评估为“原始”,并保持反斜杠原样。

试试这个:

path = r"D:\final" 
nameFile = "Res" 

result = path + '\\' + nameFile + 'mat' 

正如你所看到的,我一个包含非转义反斜杠字符串表达式之前添加r

要看到差距,尝试做:

print("\\") 
print(r"\\") 

(如果没有括号,如果你正在使用Python2)

另外,我建议使用pathlib模块标准库的妥善处理路径。这也将有很大的帮助,如果你试图让你的代码移植:

from pathlib import Path 
(Path("D:/final")/path/nameFile).with_suffix('.mat') 
0

您需要使用原始字符串的路径变量,或转义反斜线:

path = r"D:\final" 

你可以看到区别这里:

>>> "D:\final" 
'D:\x0cinal' 
>>> r"D:\final" 
'D:\\final' 

在第一种情况下,'\f'是换页符0x0c。

此外,使用os.path.join()构建路径名:

import os.path 

path = r"D:\final" 
nameFile = "Res.mat" 

result = os.path.join(path, nameFile) 
>>> result 
'D:\\final\\Res' 

既然你明确地追加字符串字面.matnameFile,为什么不能简单地定义nameFile.mat扩展?如果这需要是动态的,只需添加它是这样的:

extension = '.mat' 
result = os.path.join(path, nameFile + extension) 
0

如何获得了“R”在名字前面不使用““?

只需使用os.path.join

import os 

path = r"D:\final" 
nameFile= "Res.mat" 

result = os.path.join(path, nameFile) 
print(result) 
>> D:\final\Res.mat 
3

我的解释表明,你是在你认为第二个例子不起作用错,因为

>>> r"D:\final\Res.mat" == "D:\\final\\Res.mat" 
True 

建立文件路径的正确方法来自组件的是使用os.path.join函数,该函数可以接受多个参数并可跨平台移植。我建议你试试类似于

result = os.path.join(path, nameFile+".mat")