0

この質問はばかげた質問かもしれません。この python は初めてなので、この問題で私を助けてください。

if __name__== '__main__' :
    path=sys.argv[1]

上記のコードでは、コマンドラインから引数を読み取ります。私の引数は、システム内のファイルへのパスです。引数を指定しないと、「リストインデックスが範囲外です」というエラーが発生します

コマンドラインから読み取る代わりに、次の方法で入力を取得したい

" ファイルへのパスを入力してください.."

この行を表示した後、タブを押してパスを入力としてファイルシステムを解析するにはどうすればよいですか?

4

4 に答える 4

2

sys.argvインデックスが実際に存在することを確認する必要があるsys.argv[1]と言うのと同じことを言うことによって、単なるリストですargs = [0]; args[1]1

于 2013-01-15T09:31:10.753 に答える
0

どういうわけか関連性の低いもの

より高度なコマンドラインオプションの解析を実行する場合は、argparse モジュールの使用を検討してください。

これは、私が作成したスクリプトでのモジュールの簡単なデモンストレーションです。

import argparse

parser = argparse.ArgumentParser(description='MD5 Cracker')
parser.add_argument('target', metavar='Target_MD5_Hash', help='The target MD5 that you want to have cracked.')
parser.add_argument('--online', '-o', help='MD5 Cracker will try to crack the password using online MD5 cracking websites and databases', default=False)
parser.add_argument('--list', '-l', help='MD5 Cracker will try to crack the passwork offline with a dictionary attack using the list supplied', default=False)
parser.add_argument('--interactive', '-i', help='MD5 Cracker will enter interactive mode, allowing you to check passwords without reinitiating the software each time', default=False)

if __name__ == '__main__':
    cli_args = parser.parse_args()
    args_dict = cli_args.__dict__ # here it is cast into a dictionary to allow for easier manipulation of contents
于 2013-01-15T09:47:02.643 に答える
0

これを試して:

path = raw_input("enter path to your file..")

print path

のようなコマンドライン引数を使用している場合はhello.py myfile.txt

if len(sys.argv) > 1:
    path = sys.argv[1]

アップデート:

ディレクトリ内のすべてのファイルをユーザーに表示する必要がある場合。これを使って:

import os

i = 1

for item in os.listdir("F:/python/Lib"):
    if os.path.isfile(os.path.join("F:/python/Lib", item)):
        print str(i) + " : " + item
        i += 1

出力:

>>> 
1 : abc.py
2 : abc.pyc
3 : aifc.py
4 : antigravity.py
5 : anydbm.py
6 : argparse.py
7 : ast.py
8 : asynchat.py
9 : asyncore.py
10 : atexit.py
11 : atexit.pyc
12 : audiodev.py
13 : base64.py
14 : base64.pyc
15 : BaseHTTPServer.py
16 : BaseHTTPServer.pyc
17 : Bastion.py
18 : bdb.py
19 : bdb.pyc
于 2013-01-15T09:32:07.447 に答える
0

タブを押してパスを入力としてファイル システムを解析するにはどうすればよいですか

これは簡単な作業ではありません。タブを押すbashことは、またはbatchレベル (python プログラムを実行している端末) で行われる完了を意味するためです。

osandモジュールから適切なサブルーチンを呼び出す関数を追加sysし、カスタム補完を行う必要がある場合があります。

ここで、私の言いたいことのアイデアを見つけることができます。

于 2013-01-15T09:37:50.367 に答える