2011-02-11 3 views
0

명령 창에서 읽은 경로 이름을 파일 이름으로 변환하고 싶습니다. 예를 들어, C 변환 : 임시 \ 문서 \ \ 임시 파일은 내가 잘못 뭐하는 거지 같은 -끝에 ""를 긋습니다.

filename=tempfilename.lstrip('\') #this gave me an error 

filename=tempfilename.lstrip('\\') #and this did nothing 

뭔가를하려고했다

임시 파일을? 도움에 감사드립니다!

+0

저는 파이썬 전문가가 아니지만 \는 이스케이프 문자입니다. 대신 \\을 사용해보십시오. 또한 당신이 생각하는 것을 lstrip does을 두 번 확인하고 싶을 수도 있습니다. –

+0

@Jonas : 아니요. 유효하지 않습니다. 모든 원시 문자열은 이스케이프 시퀀스를 평가하지 않습니다. 'r '\''은 오류입니다 (끝 인용문에서 벗어남). 그러나'r '\\''은 문자열 "\\"이됩니다. – Blixt

+0

@Blixt : 당신은 절대적으로 맞습니다. –

답변

5

대부분의 다른 언어와 마찬가지로 문자열에 백 슬래시로 이스케이프 처리 된 문자 시퀀스가 ​​포함될 수 있으므로 '\' 대신에 '\\' (=는 하나의 단일 백 슬래시를 나타냄)을 사용해야합니다.

둘째, listrip이라는 메서드가 없습니다. 마지막에 스트립 핑을하려면 rstrip이 아닌 lstrip을 사용해야합니다.

구체적인 경우는 os.path.basename을 사용해야합니다.

+0

감사합니다. os.path.basename()가 작동했습니다. – Illusionist

0

,

filename = tempfilename[:-1]

EDIT를 '\\'와 '\'를 대체하고 그것을 작동합니다 :)

또는 당신이 '\'제거 당신은 항상있을 것이다 확신이다 : 정말로 q를 읽지 않았다. tempfilename.split()[-1]?

내 주먹 대답은 제목에 응답하고 strip 제안 적합하지만, 실제 질문에, 그것은 는 말한다 : 예를 들어

, C로 변환 : \ \ 임시 \ 문서를 임시 파일이

을 임시 파일 수 있습니다. ....

+0

''\\ ''을 (를) 의미하지 않습니까? –

+0

LOL 네, 그게 무슨 뜻인지 .... 뇌사 ... : D – jma

+0

@ Everyone, 나는 '\\'시도하지 않았다. 작동하지 않았다. listrip은 오타 였고, 나는 lstrip을 의미했습니다. – Illusionist

1

lstrip()은 주요 문자를 제거합니다. 즉, \\\\\a\b\c\a\b\c\이됩니다. 이것은 당신이 원하는 것이 아닙니다.

os.path.basename()을 사용하십시오.

관련 문제