제안 된 솔루션은 흥미롭고 좋은 참조를 제공하지만 부분적으로 만 만족합니다. 단일 특정 케이스가 있거나 입력 문자열의 형식을 알고있는 경우 구분 기호를 수동으로 추가하는 것이 좋지만 일반 입력에 대해 프로그래밍 방식으로 수행하려는 경우가있을 수 있습니다.
약간의 실험을 통해 기준은 첫 번째 세그먼트가 드라이브 문자 인 경우 경로 구분 기호가 추가되지 않는다는 것입니다. 즉, 실제 단위에 해당하더라도 콜론이 뒤에 오는 단일 문자를 의미합니다.
예를 들면 :
import os
testval = ['c:','c:\\','d:','j:','jr:','data:']
for t in testval:
print ('test value: ',t,', join to "folder"',os.path.join(t,'folder'))
test value: c: , join to "folder" c:folder
test value: c:\ , join to "folder" c:\folder
test value: d: , join to "folder" d:folder
test value: j: , join to "folder" j:folder
test value: jr: , join to "folder" jr:\folder
test value: data: , join to "folder" data:\folder
기준을 테스트하고 경로 수정을 적용하는 편리한 방법 os.path.splitdrive
은 첫 번째 반환 된 요소를 t+os.path.sep if os.path.splitdrive(t)[0]==t else t
.
테스트:
for t in testval:
corrected = t+os.path.sep if os.path.splitdrive(t)[0]==t else t
print ('original: %s\tcorrected: %s'%(t,corrected),' join corrected->',os.path.join(corrected,'folder'))
original: c: corrected: c:\ join corrected-> c:\folder
original: c:\ corrected: c:\ join corrected-> c:\folder
original: d: corrected: d:\ join corrected-> d:\folder
original: j: corrected: j:\ join corrected-> j:\folder
original: jr: corrected: jr: join corrected-> jr:\folder
original: data: corrected: data: join corrected-> data:\folder
후행 공백에 대해 더 견고하게 개선 할 수 있으며 창에서만 테스트했지만 아이디어가 제공되기를 바랍니다. Os.path 참조 :이 동작을 설명 할 수 있습니까? 창 이외의 시스템에 대한 흥미로운 세부 정보를 보려면.