2016-08-03 5 views
-2

경로 + 파일 (함수의 입력)의 이름에 문제가 있습니다. 이 작품 :파이썬 경로 및 원시 문자열

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

접두어는 문자열을 "원시"로 평가하여 백 슬래시를 그대로 유지하려는 것입니다.

이 시도 : 당신이 볼 수 있듯이

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

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

, 나는 비 이스케이프 백 슬래시를 포함하는 문자열 식 전에 r을 추가했다.

의 차이를 확인하려면 시도해보십시오

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

또한

, 내가 제대로 경로를 처리하는 표준 라이브러리의 pathlib 모듈을 사용하는 것이 좋습니다 (당신이 Python2를 사용하는 경우 괄호없이) .

path = r"D:\final" 

당신은 차이를 볼 수 있습니다 당신은 백 슬래시를 경로 변수의 원시 문자열을 사용하거나 탈출해야합니다

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

: 당신은 당신의 코드를 휴대용 만들려고하는 경우에도 많은 도움이 될 것입니다 여기 :

>>> "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에 리터럴 문자열을 추가하기 때문에, 왜 단순히 .mat 확장자 nameFile을 정의? 이 동적 할 필요가있는 경우, 그냥이처럼에 추가

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")