2014-02-05 3 views
2

나는 cmd python 모듈로 놀고 있었고 텍스트 완성 기능을보고있었습니다. 나는 홈 디렉토리에 '~'을 확장/인식하려고했지만 아무 쓸모가 없었습니다.Cmd 모듈 '~'완료

나는 cmd 모듈에서 completedefault(self, *ignored) 메서드를 재정 의하여 기본 완료를 처리 할 수 ​​있다는 것을 알아 냈습니다. 여기서 ignored은 텍스트, 줄, begidx, endidx의 튜플입니다. 내가 my_command ./folder 명령을 입력하면 text 매개 변수는 './folder'가되며 다음과 같은 것을 할 수 있습니다 : glob.glob(text + '*')이 폴더의 모든 파일 목록을 반환합니다. 그러나 지금 내가 my_command ~/folder 일 경우 변수에는 /folder 만 포함되므로 os.path.expanduser(text)을 사용하여 해당 폴더의 절대 경로를 확인하고 해당 폴더의 모든 파일을 표시 할 수 없습니다.

기본적으로 경로를 확장하기 위해 누군가가 올바른 방향으로 나를 가리킬 수 있는지 궁금합니다 (~). 에서 답변을 확장

+0

관심있는 것을 격리해야합니다. 'expanduser ('~/folder')'는 당신이 원하는 것을 줄 것이다. 'begidx' /'endidx'를 사용할 수 있습니까? – kwatford

답변

2

:

def complete(text, state): 
    return (glob.glob(os.path.expanduser(text)+'*')+[None])[state] 

이 이제 허용해야한다 : 전체 방법을 같이 찾고

def completedefault(self, *ignored): 
     # Set the autocomplete preferences 
     readline.set_completer_delims(' \t\n;') 
     readline.parse_and_bind("tab: complete") 
     readline.set_completer(complete) 

: https://stackoverflow.com/a/6657975/1263565

당신과 함께 cmd를 모듈의 completedefault() 메소드를 오버라이드 (override) 할 수 ~ 확장.

+0

고마워요. – user3277112

관련 문제