4

私はしばらくの間、プログラムを開くなどのタスクを実行するためにユーザー入力を受け入れるだけの一般的なユーティリティスクリプトに取り組んできました。このプログラムでは、「コマンド」という名前を raw_input として定義し、if ステートメントを使用してコマンドのリストをチェックします (以下の小さな例)。

if ステートメントを常に使用すると、プログラムの実行が遅くなるため、コマンドの表などのより良い方法があるかどうか疑問に思っていますか? 私はプログラミングにかなり慣れていないので、これを達成する方法がわかりません。

import os
command = raw_input('What would you like to open:')

if 'skype' in command:
    os.chdir('C:\Program Files (x86)\Skype\Phone')
    os.startfile('Skype.exe')
4

1 に答える 1

7

タプルを使用してコマンドを辞書に保存し、次のようにしてコマンドを保存できます。

command = {}
command['skype'] = 'C:\Program Files (x86)\Skype\Phone', 'Skype.exe'
command['explorer'] = 'C:\Windows\', 'Explorer.exe'

次に、次の手順を実行して、ユーザー入力に基づいて正しいコマンドを実行できます。

if raw_input.lower().strip() in command: # Check to see if input is defined in the dictionary.
   os.chdir(command[raw_input][0]) # Gets Tuple item 0 (e.g. C:\Program Files.....)
   os.startfile(command[myIraw_inputput][1]) # Gets Tuple item 1 (e.g. Skype.exe)

詳細についてはDictionariesTuples こちらをご覧ください。

複数のコマンドを許可する必要がある場合は、それらをスペースで区切り、コマンドを配列に分割できます。

for input in raw_input.split():
    if input.lower().strip() in command: # Check to see if input is defined in the dictionary.
       os.chdir(command[input][0]) # Gets Tuple item 0 (e.g. C:\Program Files.....)
       os.startfile(command[input][4]) # Gets Tuple item 1 (e.g. Skype.exe)

これにより、のようなコマンドを発行できますがskype explorer、タイプミスの余地がないため、空白だけで区切って完全に一致させる必要があることに注意してください。例として、書くことはできますがexplorer、書くことはできませんexplorer!

于 2012-12-24T23:03:00.677 に答える