Re[17]: Убунта
От: Somescout  
Дата: 20.12.19 09:18
Оценка: +2
Здравствуйте, netch80, Вы писали:

S>>Давайте возьмём чуть более сложный код:

S>>
$result = ls -l | ? { $_ -like '*something*' } | sort

S>>Вызываем внешнюю программу "ls" с параметром "-l", фильтруем средствами языка её вывод, по конвееру передаём результат внешней программе, ложим получившееся в переменную $result.
S>>Можно пример как такое оформить на питоне?

N>Ну если sort сделать внутренним (рекомендуется)

Нет. Sort здесь чисто для примера внешней программы.

N>Если внешним, и объём данных большой, то это получится что-то типа


N>
N>rec_something = re.compile('*something*')
N>r1 = [x.rstrip() for x in subprocess.check_output(['ls', '-l'])]
N>otext1 = '\n'.join([x for x in r1 if rec_something.match(x)]) + '\n'
N>result = [x.rstrip() for x in subprocess.check_output(['sort'], input = otext1)]
N>


N>Да, чуть-чуть более громоздко. Но питон не рассчитывается на управление конвейером, как обычные шеллы, и позволяет больше гибкости в правилах обработки ввода-вывода (например, делить на строки или нет) — за это приходится платить дополнительными строками.


Правильно я понимаю, что этот код сначала читает весь вывод, затем обрабатывает его, потом отправляет внешней программе? Потому что это не то, что делает код на powershell — там именно конвейер.

N>В общем, я, кажется, понял — тебе нравится одновременное сочетание прямых shell-like подходов, вплоть до конвейеров, и объектного управления за его пределами.

N>Смысл в этом есть, но если оба варианта нормально реализованы, между ними есть адекватный интерфейс и они нормально разделяются в синтаксисе. Со вторым и третьим проблемы, наверно, нет (ну кроме регистра, концов строк и прочего виндового маразма), а вот с первым будут очень серьёзные проблемы (и по отзывам людей, которые это трогали лет 5 назад, было неюзабельно в плане объектного доступа в Unix).

"Рабинович напел"?

N>>>ls -l $*, ls -l "$*" и ls -l "$@"? Что является аналогом в powershell, есть ли оно вообще? И сколько нужно читать документации на powershell, чтобы научиться тому, как в нём это делается?

S>>
& ls -l $args

S>>
& ls -l "$args"

S>>Насчёт последнего — что значит $@?

N>"$@" — все номерные аргументы без переразложения.

В смысле строка аргументов в raw-виде? Только если через хаки ($MyInvocation.Line — команда целиком).

N>>>Ответ прошу со ссылками и прочими важными деталями.

S>>
help about_Automatic_Variables
S>>help about_Parameters
S>>help about_Operators


N>Не катит, на убунте по умолчанию не присутствует в репах.


И что? А у меня питон не установлен в винде. Или ставьте powershell, или гуглите — гугль первым результатом выдаёт ссылку на онлайновую документацию.

S>>Почему? Именно регистрозависимость вносит дополнительную бесполезную сущность.

N>Не доказана её бесполезность.
Нет, не доказана её полезность.

S>> От правильность заводить файлы различающиеся только регистром вы отнекиваетесь выше,

N>Не распарсил это утверждение. Я нигде не говорил, что неправильно заводить файлы, отличающиеся только регистром.
N>Я говорил и говорю, что есть контексты, где CS не создаёт проблемы, и потому то, что выглядит по-разному, должно различаться в хранении; а есть контексты, где правильнее CI, но при этом в этих контекстах есть масса других проблем, которые CI не решает (и поэтому делать только CI, но не решать другие проблемы, это костыльная глупость).

Можно примеры случаев, когда проблемы от CI в файловой системе не были бы вызваны плохой архитектурой приложения? Потому что файловая система не предназначена для хранения произвольных данных в именах файлов, а вы, насколько я понимаю, защищаете именно возможность не сохранить именованые данные, а сохранить данные в имени.
ARI ARI ARI... Arrivederci!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.