0

ユーザーにパスを入力するように依頼したいのですが、TAB を押してターミナル補完を手伝って、完全に手で書くことを強制したくありませんか? Pythonでコーディングする方法は?

                 if __name__== '__main__' : 

                       path=sys.argv[1]
                  a=glob.glob(path+"/abc*")

ここでは、コマンドラインからパスを取得しています。それは私が望む方法ではありません。ユーザーに求めるプロンプトを表示したい

出力が期待されます:「ファイルのパスを入力してください」: これで、ファイル システムを使用して解析できるはずです。

注:コマンドライン引数として受け取りたくありません*

4

2 に答える 2

0

うまくいけば、これがあなたがやりたいことをするためのキックスタートになるでしょう。これは非常にラフであり、これらすべてのエッジケースに対して改善する必要がありますが、うまくいけば、何らかの用途が見つかるでしょう. あなたが尋ねていたと思う質問に私が答えたことを願っています。

#!/usr/bin/env python 
import readline
import os.path
import glob

class Completer(object):
    def __init__(self):
        self.matches = []
    def complete_path(self, text, state):
        if state == 0:
            self.matches = glob.glob(text + "*")
        if state < len(self.matches):
            if os.path.isdir(self.matches[state]):
                return self.matches[state] + "/"
            else:
                return self.matches[state]
        else:
            self.matches = []
            return None

readline.parse_and_bind('tab: complete')
readline.parse_and_bind('set editing-mode emacs')

# Allow '/'
default_delims = readline.get_completer_delims()
delims = default_delims.translate(None, "/")
readline.set_completer_delims(delims)

readline.set_completer(Completer().complete_path)

while True:
    line = raw_input('Enter Path: ["^C" to quit] : ')
    print 'Line: "%s"' % line
于 2013-01-16T11:57:16.520 に答える
0

readline モジュールのようなものが役立つはずです。

于 2013-01-16T10:07:16.943 に答える