PowerShell, исключение для catch [duplicate]

for f, b in zip(foo, bar):
    print(f, b)

zip останавливается, когда останавливается более короткое число foo или bar.

В Python 2, zip возвращает список кортежей. Это нормально, когда foo и bar не массивны. Если они оба массивны, то формирование zip(foo,bar) является излишне массивной временной переменной и должно быть заменено на itertools.izip или itertools.izip_longest, которое возвращает итератор вместо списка.

import itertools
for f,b in itertools.izip(foo,bar):
    print(f,b)
for f,b in itertools.izip_longest(foo,bar):
    print(f,b)

izip останавливается при исчерпании foo или bar. izip_longest останавливается, когда оба foo и bar исчерпаны. Когда более короткий итератор (ы) исчерпан, izip_longest дает кортеж с None в позиции, соответствующей этому итератору. Вы также можете установить другой fillvalue, кроме None, если хотите.

В Python 3, zip возвращает итератор кортежей, например itertools.izip в Python2. Чтобы получить список кортежей, используйте list(zip(foo, bar)). И чтобы застегнуть молнию до тех пор, пока оба итератора не будут исчерпаны, вы будете использовать itertools.zip_longest .


Обратите внимание также, что zip и его zip -подобный brethen могут принять произвольное число итераций в качестве аргументов. Например,

for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'], 
                              ['red', 'blue', 'green']):
    print('{} {} {}'.format(num, color, cheese))

печатает

1 red manchego
2 blue stilton
3 green brie
6
задан JasonMArcher 3 May 2012 в 19:20
поделиться

2 ответа

Здесь вы можете обнаружить полное имя типа исключения, результат здесь дает System.Management.Automation.ArgumentTransformationMetadataException, как указано @Adrian Wright.

Clear-Host
try {
    [xml]$xml = Get-Content "c:\Temp\1.cs" # line 2
}
catch {
    # Discovering the full type name of an exception
    Write-Host $_.Exception.gettype().fullName
    Write-Host $_.Exception.message
}
5
ответ дан JPBlanc 28 August 2018 в 06:15
поделиться

System.Management.Automation.ArgumentTransformationMetadataException

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

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