Вот простой пример
from pandas import DataFrame
# Create data set
d = {'Revenue':[100,111,222],
'Cost':[333,444,555]}
df = DataFrame(d)
# mask = Return True when the value in column "Revenue" is equal to 111
mask = df['Revenue'] == 111
print mask
# Result:
# 0 False
# 1 True
# 2 False
# Name: Revenue, dtype: bool
# Select * FROM df WHERE Revenue = 111
df[mask]
# Result:
# Cost Revenue
# 1 444 111
Этот ответ предлагает optparse
, который подходит для более старых версий Python. Для Python 2.7 и выше, argparse
замены optparse
. См. этот ответ для получения дополнительной информации.
, Поскольку другие люди указали, Вы - более обеспеченное движение с optparse по getopt. getopt, в значительной степени непосредственное отображение стандарта getopt (3) библиотечные функции C, и не очень простой в использовании.
optparse, будучи более подробным, намного лучше структурирован и более прост расшириться позже.
Вот типичная строка для добавления опции к синтаксическому анализатору:
parser.add_option('-q', '--query',
action="store", dest="query",
help="query string", default="spam")
Это в значительной степени выступает за себя; во время обработки это примет-q или - запрос как опции, сохранит аргумент в атрибуте, названном запросом, и имеет значение по умолчанию, если Вы не определите его. Это также самодокументирует в этом, Вы объявляете аргумент справки (который будет использоваться, когда выполнено с-h/-справка), тут же с опцией.
Обычно Вы анализируете свои споры с:
options, args = parser.parse_args()
Это, по умолчанию, проанализирует стандартные аргументы, переданные сценарию (sys.argv [1:])
options.query будет тогда установлен на значение, которое Вы передали сценарию.
Вы создаете синтаксический анализатор просто путем выполнения
parser = optparse.OptionParser()
, Это все основы, в которых Вы нуждаетесь. Вот полный сценарий Python, который показывает это:
import optparse
parser = optparse.OptionParser()
parser.add_option('-q', '--query',
action="store", dest="query",
help="query string", default="spam")
options, args = parser.parse_args()
print 'Query string:', options.query
5 строк Python, которые показывают Вам основы.
Сохраняют его в sample.py и выполняют его однажды с [1 123]
python sample.py
и однажды с [1 124]
python sample.py --query myquery
Кроме того, Вы найдете, что optparse очень легко расширить. В одном из моих проектов я создал класс Команды, который позволяет, Вы к вложенному множеству подуправляете в дереве команды легко. Это использует optparse в большой степени для цепочечных команд вместе. Это не что-то, что я могу легко объяснить в нескольких строках, но не стесняться к [1 110] обзор вокруг в моем репозитории для основного класса, а также класс, который использует его и синтаксический анализатор опции
Я предпочитаю optparse getopt. Это очень декларативно: Вы говорите ему названия опций и эффектов, которые они должны иметь (например, устанавливая булево поле), и это вручает Вам, поддерживают словарь, заполненный согласно Вашим спецификациям.
Я думаю, что лучшим способом для больших проектов является optparse, но если Вы ищете простой способ, возможно , http://werkzeug.pocoo.org/documentation/script является чем-то для Вас.
from werkzeug import script
# actions go here
def action_foo(name=""):
"""action foo does foo"""
pass
def action_bar(id=0, title="default title"):
"""action bar does bar"""
pass
if __name__ == '__main__':
script.run()
, Таким образом, в основном каждая функция action_* подвергнута командной строке, и хорошее сообщение справки сгенерировано бесплатно.
python foo.py
usage: foo.py <action> [<options>]
foo.py --help
actions:
bar:
action bar does bar
--id integer 0
--title string default title
foo:
action foo does foo
--name string
Используйте optparse
, который идет со стандартной библиотекой. Например:
#!/usr/bin/env python
import optparse
def main():
p = optparse.OptionParser()
p.add_option('--person', '-p', default="world")
options, arguments = p.parse_args()
print 'Hello %s' % options.person
if __name__ == '__main__':
main()
Источник: Используя Python для создания инструментов командной строки UNIX
Однако с Python 2.7 optparse удерживается от использования, см.: , Почему использование argparse, а не optparse?
В значительной степени все используют , getopt
Здесь является примером кода для документа:
import getopt, sys
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="])
except getopt.GetoptError:
# print help information and exit:
usage()
sys.exit(2)
output = None
verbose = False
for o, a in opts:
if o == "-v":
verbose = True
if o in ("-h", "--help"):
usage()
sys.exit()
if o in ("-o", "--output"):
output = a
Так, одним словом, вот то, как это работает.
у Вас есть два типа опций. Те, кто получает аргументы и тех, кто точно так же, как переключатели.
sys.argv
в значительной степени Ваш char** argv
в C. Как в C Вы пропускаете первый элемент, который является названием Вашей программы и синтаксического анализа только аргументы: sys.argv[1:]
Getopt.getopt
проанализирует его согласно правилу, которое Вы даете в аргументе.
"ho:v"
здесь описывает короткие споры: -ONELETTER
. :
средства, что -o
принимает один аргумент.
Наконец ["help", "output="]
описывает длинные споры (--MORETHANONELETTER
). =
, после того, как произведено еще раз средства, которые производят, принимают аргументы.
результатом является список пары (опция, аргумент)
, Если опция не принимает аргумента (как [1 112] здесь) arg
, часть является пустой строкой. Вы тогда обычно хотите циклично выполниться в этом списке и протестировать имя опции как в примере.
я надеюсь, что это помогло Вам.
На всякий случай Вы, возможно, должны были бы, это может помочь, если Вам нужно к захват unicode аргументы на Win32 (2K, XP и т.д.):
from ctypes import *
def wmain(argc, argv):
print argc
for i in argv:
print i
return 0
def startup():
size = c_int()
ptr = windll.shell32.CommandLineToArgvW(windll.kernel32.GetCommandLineW(), byref(size))
ref = c_wchar_p * size.value
raw = ref.from_address(ptr)
args = [arg for arg in raw]
windll.kernel32.LocalFree(ptr)
exit(wmain(len(args), args))
startup()
Новый модный способ - argparse
по этим причинам. argparse> optparse> getopt
обновление: Начиная с py2.7 argparse является частью стандартной библиотеки, а optparse устарел.