我对路径+文件的名称有一些问题(这是函数的输入)。这有效:
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 :(得分:3)
我的翻译建议你错误地认为第二个例子不起作用,因为
>>> r"D:\final\Res.mat" == "D:\\final\\Res.mat"
True
从组件构建文件路径的正确方法是使用os.path.join
函数,该函数可以使用多个参数并可跨平台移植。我建议你试试像
result = os.path.join(path, nameFile+".mat")
答案 1 :(得分:1)
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')
答案 2 :(得分:1)
您需要使用原始字符串作为路径变量,或者转义反斜杠:
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'
由于您明确将字符串文字.mat
附加到nameFile
,为什么不简单地使用nameFile
扩展名定义.mat
?如果这需要是动态的,只需将其添加为:
extension = '.mat'
result = os.path.join(path, nameFile + extension)
答案 3 :(得分:1)
我如何获得" 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