#python #python-3.x #powershell #pipeline #pylint
#python #python-3.x #powershell #конвейер #pylint
Вопрос:
Я использую Powershell (версия 5.1.17763.1007) и хочу объединить два конвейера в один. Их содержимое очень похоже; Они рекурсивно ищут файлы Python из папки в ее вложенные папки и генерируют отчеты о компоновке для этих файлов Python, используя Pylint и prospector соответственно (см. https://www.pylint.org / и https://pypi.org/project/prospector / )
$path_to_files = "C:Users$env:UserNameDesktopmy_project_folderlinter_reports"
# Get all Python modules in folder and generate Pylint reports
Get-ChildItem -Path $path_to_files -Recurse -Filter *.py |
ForEach-Object { pylint $_.Name |
Out-File -FilePath "pylint_results_$($_.Name.TrimEnd(".py")).txt"
}
# Get all Python modules in folder and generate Prospector reports
Get-ChildItem -Path $path_to_files -Recurse -Filter *.py |
ForEach-Object { prospector $_.Name |
Out-File -FilePath "prospector_results_$($_.Name.TrimEnd(".py")).txt"
}
Я экспериментировал с командлетом Tee-Object ( https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/tee-object?view=powershell-7 ), это лучший подход?
Я ищу что-то вроде этого (псевдокод):
Get-ChildItem -Path $path_to_files -Recurse -Filter *.py |
ForEach-Object Tee-Object { pylint $_.Name |
Out-File -FilePath "pylint_results_$($_.Name.TrimEnd(".py")).txt"
} |
{ prospector$_.Name |
Out-File -FilePath "prospector_results_$($_.Name.TrimEnd(".py")).txt"
}
Ответ №1:
почему бы не выполнить две команды друг за другом?
$path_to_files = "C:Users$env:UserNameDesktopmy_project_folderlinter_reports"
# Get all Python modules in folder and generate Pylint and prospector reports
Get-ChildItem -Path $path_to_files -Recurse -Filter *.py |
ForEach-Object { pylint $_.Name |
Out-File -FilePath "pylint_results_$($_.Name.TrimEnd(".py")).txt"
prospector $_.Name |
Out-File -FilePath "prospector_results_$($_.Name.TrimEnd(".py")).txt"
}