Как разделить строку с shell-командой на отдельные аргументы в виде списка?
Если сделать просто сплит по пробелу то получим то что надо, кроме случаев со вставками текста с пробелами. Например так:
>>> '-arg "I Am Groot"'.split(' ')
['-arg', '"I', 'Am', 'Groot"']
Чтобы учитывать текст в кавычках как единый аргумент можно воспользоваться функцией shlex.split()
Кто читает мой канал давно, уже в курсе.
А что делать, если нужно обратное действие? Объединить аргументы из списка в строку и при этом добавить кавычки в аргумент с пробелами.
Конечно, если вы используете subprocess то он сам всё разрулит. Но если вам нужна именно команда одной строкой, то можно воспользоваться готовой функцией в том же subprocess.
>>> from subprocess import list2cmdline
>>> list2cmdline(['-arg', 'I Am Groot'])
'-arg "I Am Groot"'
Он также позаботится об экранировании уже имеющихся кавычек
>>> list2cmdline(['-arg', 'I Am "Groot"'])
'-arg "I Am \"Groot\""'
А вот так он может "схлопнуть" в команду JSON
>>> list2cmdline(['--json', json.dumps({'key': 'value'})])
'--json "{\"key\": \"value\"}"'
_______________
Возможно кто-то спросит, а зачем соединять аргументы в строку если subprocess сам это сделает а os.system не наш путь?
Мне как-то потребовалось отправлять команду на удалённое выполнение и в API поддерживалось указание команды только строкой. Так что всякое бывает)
#libs#basic
News: #Ethiopia wheat imports to persist as rising prices, tight supply offset production gains
A new #USDA report projects that Ethiopia will continue importing about 1.4 million metric tons of #wheat despite increased domestic production, citing tight supply and surging prices. The report also notes that domestic wheat prices have risen sharply, reinforcing reliance on imports even as output grows.
Despite the expected growth in wheat production, the report warns that domestic wheat supplies remain tight, forcing millers and traders to increasingly rely on imports.
#Russia remains Ethiopia’s largest wheat supplier, accounting for 68 percent of imports, followed by #Ukraine and #Romania. Together, the three countries supplied 93 percent of Ethiopia’s wheat imports, underscoring the country’s continued reliance on Black Sea markets.
Prime Minister Abiy Ahmed has repeatedly remarked rejecting wheat import as a defining feature of Ethiopia........
Read more: https://addisstandard.com/?p=56330
News: USDA purchases #US wheat to support agricultural development in #Ethiopia and #Kenya
The United States Department of Agriculture (#USDA) has purchased 183,700 metric tons of U.S. hard red winter (HRW) wheat to support agricultural development projects in Ethiopia and Kenya, according to the U.S. Wheat Associates (USW).
The purchase, made in mid-January by the USDA’s Foreign Agricultural Service (FAS), marks the first U.S. wheat procurements under the Food for Progress program for the 2025 fiscal year. The wheat will be delivered in four cargoes—three from #Houston, #Texas, and one from #Kalama, #Washington—destined for the two #East_African countries.
Food for Progress is a U.S. government program that provides agricultural commodities to support food security and development in partner countries. Under the program, donated food commodities are sold locally,....
https://web.facebook.com/AddisstandardEng/posts/pfbid0qv13B87UsJgyuNpxxeB8Be2fj41XGjLZ1aRCDYLc85AGHGZ3hrMK9QRFKRDiQDcal
🚀 USDA Maintains Soybean Production Forecast for 2025/2026
The United States Department of Agriculture (USDA) has maintained its forecast for the 2025/2026 soybean production at 4.262 billion bushels, unchanged from its March estimate. According to Jin10, the USDA also projects the ending stocks for the same period to be 350 million bushels, slightly above the market expectation of 349 million bushels, and consistent with the March forecast. Additionally, the USDA anticipates the soybean yield to remain at 53 bushels per acre, the same as the previous month's projection.
#USDA#Soybean#Agriculture#Production#Forecast #2025 #2026 #Yield#EndingStocks#USAgri