TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #26 · 26 јан.

Правильно ли вы используете аргумент shell у методов subprocess? Вкратце опишу разницу состояний этого аргумента. (полный разбор — тема для статьи в блоге, возможно позже) Флаг "shell" определяет, будет ли использоваться системный шел как основной исполняемый файл для вызова вашей команды. ⏩ shell=True - К вашей команде добавится исполняемый файл /bin/sh или cmd.exe - Ваша команда будет аргументом флага -с, поэтому команду нужно передавать строкой - Команду необходимо передавать с готовым экранированием и лексическим разбором пробелов. ✅ Правильно: subprocess.check_output('ls -sl', shell=True) Команда выглядит так: /bin/sh -c "ls -sl" Здесь видно, что мы передаём значение аргумента -c а не саму команду. ❌Неправильно subprocess.check_output(['ls', '-sl'], shell=True) Команда выглядит так: /bin/sh -c "ls" -sl Ошибки не будет, но аргументы используются неверно. Получите не то что ожидаете. ⏩ shell=False - команду нужно передать списком - ожидается, что первым аргументом будет исполняемый файл - будет запущен непосредственно файл из первого аргумента, без /bin/sh или cmd.exe - автоматическое экранирование пробелов в аргументах списка ✅Правильно subprocess.check_output(['ls', '-sl'], shell=False) Команда будет выглядеть так ls -sl ❌Неправильно subprocess.check_output('ls -sl', shell=False) Эта команда завершится ошибкой: No such file or directory То есть система пытается найти файл "ls -sl" а не файл "ls" А также, если не используется shell то путь к исполняемому файлу требуется писать абсолютным, даже стандартные системные утилиты. ___________________ - для Windows всё аналогично - для других методов из subprocess всё аналогично #tricks#libs

Hashtags

Резултати

Пронајдени 1 слични објави

Глобално пребарување

sudo recast

@sudo_recast · Post #918 · 17.04.2025 г., 09:47

A useful command when you encounter conflicts while cherry-picking: tig HEAD $(git rev-parse CHERRY_PICK_HEAD 2>/dev/null) -- $(git diff --name-only --diff-filter=U | head -1) #tricks@sudo_recast

Hashtags