Создание моего для исполняемого цикла - PullRequest
0 голосов
/ 23 января 2011

Я создал этот рабочий цикл в Python:

a = 'word'

for i in range(len(a)):

 print a[i:] + a[:i], (a[i:] + a[:i])[::-1]

и мне нужно сделать его исполняемым из командной строки, а также иметь возможность принимать новые аргументы.

Я немного не в себе, как это сделать. Я знаю, что вам нужно использовать

if __name__ == '__main__':

как-то ... И что мне нужно использовать sys.argv

Если бы кто-нибудь мог объяснить, как это сделать, и формат создания любого сценария, выполняемого из командной строки, я был бы очень признателен.

Ответы [ 3 ]

2 голосов
/ 23 января 2011

В зависимости от того, насколько гибким вы хотите иметь свой скрипт Python, я бы структурировал скрипт так:

def get_args():
    # logic for parsing arguments here
    # return e.g. a dictionary

def your_method(arg1=None,arg2=...):
    # further logic

if __name__ == "__main__":
    args = get_args()
    your_method(**args)

Существуют различные модули для анализа аргументов командной строки.Посмотрите на argparse (проще) и optparse.

Если вам просто нужен простой способ доступа к аргументам командной строки, вы можете перейтис sys.argv.

С этим разделением вы также можете импортировать свою функцию в другой код.

Пример:

import sys

def get_args():
    word = sys.argv[1] if (len(sys.argv) > 1) else ''
    return {"word": word}

def your_method(word=''):
    for i in range(len(word)):
        print word[i:] + word[:i], (word[i:] + word[:i])[::-1]

if __name__ == "__main__":
    args = get_args()
    your_method(**args)

изапустите его с

python yourscript.py someword

См. также:

2 голосов
/ 23 января 2011

Вы можете просто написать

import sys
a = sys.argv[1]
etc..

А затем запустите:

python yourcode.py argument

The

if __name__=='__main__':

не требуется, но вы также можете поместить весь свой код под это. Его цель - указать код, который будет выполняться только в том случае, если вы запускаете свою программу, например «python yourcode.py», и предотвращать выполнение кода в соответствии с оператором if, если вы напишите «import yourcode» в другом файле .py.

0 голосов
/ 23 января 2011
import sys
if __name__ == '__main__':
    a = sys.argv[1] #sys.argv[0] is your file name, and [1] is the next argument
    for i in range(len(a)):
        print a[i:] + a[:i], (a[i:] + a[:i])[::-1]

Затем вы просто переходите в каталог с файлом и называете его так:

python file.py wordHere

В командной строке.

...