алгоритм персептрона sysargv [dубликат]

Не обманывайте pinvoke, если вам это не нужно.

Reference System.DirectoryServices, а затем вызывается:

  System.DirectoryServices.ActiveDirectory.Domain.  GetComputerDomain ()  

Выбрасывает ActiveDirectoryObjectNotFoundException , если машина не подключена к домену. Возвращаемый объект Domain содержит свойство Name, которое вы ищете.

86
задан detly 7 November 2010 в 12:44
поделиться

8 ответов

Хотелось бы отметить, что в предыдущих ответах было сделано много предположений о знаниях пользователя. Этот ответ пытается ответить на вопрос на более учебном уровне.

Для каждого вызова Python sys.argv автоматически представляет список строк, представляющих аргументы ( как разделенные пробелами) в командной строке. Имя происходит из соглашения C программирования , в котором argv и argc представляют аргументы командной строки.

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

Вы можете просто создать скрипт, который печатает аргументы по мере их представления. Он также печатает количество аргументов, используя функцию len в списке.

  из __future__ import print_function import sys print (sys.argv, len (sys.argv  ))  

Для сценария требуется Python 2.6 или новее. Если вы вызываете этот скрипт print_args.py , вы можете вызвать его с разными аргументами, чтобы узнать, что происходит.

  & gt;  python print_args.py ['print_args.py'] 1 & gt;  python print_args.py foo и bar ['print_args.py', 'foo', 'and', 'bar'] 4 & gt;  python print_args.py "foo and bar" ['print_args.py', 'foo and bar'] 2 & gt;  python print_args.py «foo and bar» и baz ['print_args.py', 'foo and bar', 'and', 'baz'] 4  

Как вы можете видеть, аргументы командной строки включают имя сценария, но не имя интерпретатора. В этом смысле Python рассматривает сценарий как исполняемый файл. Если вам нужно знать имя исполняемого файла (в этом случае python), вы можете использовать sys.executable .

Вы можете видеть из примеров, которые можно получить аргументы, которые содержат пробелы, если пользователь вызывал скрипт с аргументами, заключенными в кавычки, так что вы получаете список аргументов, предоставленных пользователем.

Теперь в вашем коде Python вы можете использовать этот список строк в качестве вклада в вашу программу. Поскольку списки индексируются нулевыми целыми числами, вы можете получить отдельные элементы, используя синтаксис списка [0]. Например, чтобы получить имя скрипта:

  script_name = sys.argv [0] # это всегда будет работать.   

Хотя вам интересно, вам редко нужно знать имя вашего скрипта. Чтобы получить первый аргумент после скрипта для имени файла, вы можете сделать следующее:

  filename = sys.argv [1]  

Это очень частое использование, но обратите внимание, что он не сгенерирован с помощью IndexError, если аргумент не был предоставлен.

Кроме того, Python позволяет ссылаться на фрагмент списка, поэтому, чтобы получить другой список из аргументов, предоставленных пользователем (но без имени сценария), вы можете сделать

  user_args = sys.argv [1:] # получить все после имени скрипта  

Кроме того, Python позволяет назначать последовательность элементов (включая списки) именам переменных. Поэтому, если вы ожидаете, что пользователь всегда будет поставлять два аргумента, вы можете назначить эти аргументы (как строки) двум переменным:

  user_args = sys.argv [1:] fun, games = user_args #  len (user_args) лучше 2  

Итак, чтобы ответить на ваш конкретный вопрос, sys.argv [1] представляет первый аргумент командной строки (как string ), поставленный в рассматриваемый скрипт. Он не будет запрашивать ввод, но он будет терпеть неудачу с IndexError, если в командной строке после имени сценария не указаны аргументы.

232
ответ дан William-Jack Dalessandro 15 August 2018 в 17:06
поделиться
  • 1
    Когда вы показываете список строк sys.argv , мне интересно, что делает строка из __future__ import print_function . Это что-то, что я должен добавить, если я NOT работает на Python 3, но Python 2? @ Джейсон Р. Кумбс – Nicholas 28 June 2016 в 08:42
  • 2
    @NicholasLiu, вам не нужно добавлять его, если вы на Python 3. Я добавил его для полноты. Попробуйте работать без него на Python 2, и вы получите разные результаты, чем то, что я описал. Попробуйте. – Jason R. Coombs 10 July 2016 в 01:02
  • 3
    @ JasonR.Coombs Я смущаюсь с этим: sys.argv ** ** автоматически представляет список строк . Вы имеете в виду & quot; дает & quot; или "возврат"? – JinSnow 20 February 2017 в 21:51
  • 4
    @Guillaume: Это тонкая смысловая разница, но в Python имена, такие как sys.argv, содержат ссылки на объекты. Так что технически атрибут argv модуля sys является ссылкой на объект списка, содержащий строки аргументов. Для использования дает или return предложит вызов функции или генератор или другую конструкцию. ссылки или представляют могут быть более точными членами, но является достаточно близким. – Jason R. Coombs 21 February 2017 в 23:55
  • 5
    @ JasonR.Coombs, что произойдет, если я напрямую вызову main , импортировав модуль (скажем, имя модуля moduleA.py ) и вызовите функцию, как в import ModuleA; moduleA.main () . В этом случае аргументов командной строки нет ... так что sys.argv [0] все еще должен представлять имя файла , т.е. он должен распечатать moduleA.py ? – alpha_989 1 August 2018 в 17:02

sys.argv - это список.

Этот список создается вашей командной строкой, это список аргументов командной строки.

Для Пример:

в вашей командной строке вы вводите что-то вроде этого,

  python3.2 file.py что-то  

sys.argv станет списком ['file.py', 'something']

В этом случае sys.argv [1] = 'something' [ ! d9]

15
ответ дан BoJack Horseman 15 August 2018 в 17:06
поделиться

Просто добавляя к ответу Фредерика, например, если вы вызываете свой скрипт следующим образом:

./myscript.py foo bar

sys.argv [0] будет «./myscript.py» sys.argv [1] будет «foo» и sys.argv [2] будет «bar» ... и т. д.

В вашем примере кода, если вы вызываете скрипт следующим образом ./myscript.py foo , вывод скрипта будет «Hello there foo».

11
ответ дан CodeWombat 15 August 2018 в 17:06
поделиться

Добавление еще нескольких замечаний к Jason's Answer:

Для принятия всех аргументов, предоставленных пользователем: user_args = sys.argv [1:]

Рассмотрим sys.argv как список строк (упомянутый Джейсоном). Таким образом, все манипуляции с списками будут применяться здесь. Это называется «Срезание списка». Для получения дополнительной информации посетите здесь .

Синтаксис выглядит следующим образом: list [start: end: step]. Если вы опустите начало, по умолчанию будет 0, и если вы опустите конец, по умолчанию будет указан список.

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

  user_args = sys.argv [3:]  

Предположим, вам нужны только первые два аргумента, а затем:

  user_args =  sys.argv [0: 2] или user_args = sys.argv [: 2]  

Предположим, что вам нужны аргументы от 2 до 4:

  user_args = sys  .argv [2: 4]  

Предположим, что вы хотите использовать последний аргумент (последний аргумент всегда равен -1, так что происходит здесь, мы начинаем отсчет со спины, поэтому начало - последнее, нет!)

  user_args = sys.argv [-1]  

Предположим, что вы хотите второй последний аргумент:

  user_args = sys.argv [-2]  

Предположим, что вам нужны два последних аргумента:

  user_args = sys.argv [-  2:]  

Предположим, что вам нужны последние два аргумента. Здесь начинается -2, это второй последний элемент, а затем до конца (обозначается символом «:»):

  user_args = sys.argv [-2:]  [  ! d31] 

Предположим, вы хотите все, кроме двух последних аргументов. Здесь начало равно 0 (по умолчанию), а end - второй последний элемент:

  user_args = sys.argv [: - 2]  

Предположим, вы нужны аргументы в обратном порядке:

  user_args = sys.argv [:: - 1]  

Надеюсь, это поможет.

6
ответ дан Community 15 August 2018 в 17:06
поделиться
28
ответ дан Frédéric Hamidi 15 August 2018 в 17:06
поделиться

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

Просто попробуйте это:

  import sys print sys.argv  

argv хранит все аргументы, переданные в списке python. Вышеприведенное будет распечатывать все переданные аргументы, будет запускать скрипт.

Теперь попробуйте запустить файл filename.py следующим образом:

  python filename.py пример example1   

это напечатает 3 аргумента в списке.

  sys.argv [0] # - первый переданный аргумент, который в основном является именем файла.   

Аналогично, argv 1 - это первый переданный аргумент, в данном случае «пример»

Уже задан аналогичный вопрос здесь btw. Надеюсь это поможет!

0
ответ дан geekidharsh 15 August 2018 в 17:06
поделиться

Передавать аргументы вашему скрипту python при запуске скрипта через командную строку

python create_thumbnail.py test1.jpg test2.jpg

здесь, имя скрипта - create_thumbnail.py, аргумент 1 - test1.jpg, аргумент 2 - test2.jpg

С помощью сценария create_thumbnail.py я использую

   sys.argv [1:]  

, которые дают мне список аргументов, переданных в командной строке как ['test1.jpg', 'test2.jpg']

2
ответ дан JBJ 15 August 2018 в 17:06
поделиться

sys.argv - это список, содержащий параметры сценария и аргументы командной строки; т. е. sys.argv [0] - это путь к скрипту, который вы используете, и все следующие члены являются аргументами.

3
ответ дан TartanLlama 15 August 2018 в 17:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: