Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 1, 2021 16:25:29

kancler
Зарегистрирован: 2020-11-07
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

маленький вопрос по os.system, os.popen ...

Здравствуйте! При передачи аргументов, содержащих пробелы, в os.popen, os.system возникает ошибка, кто-нибудь знает, как можно это обойти?

import os, sys
pypath = sys.executable # "E:\program files\python\python.exe"
cmdline = "E:\program files\echo.py"
os.system(pypath + ' ' + cmdline)
os.popen('%s %s' % (pypath, cmdline))
Не работает ни первый, ни второй варианты. Шаманил с кавычками в разных местах - все равно не получается.

Ошибка: ‘E:\program’ is not recognized as an iternal command…

Спасибо за помощь!

Отредактировано kancler (Фев. 1, 2021 16:27:02)

Офлайн

#2 Фев. 1, 2021 16:47:12

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2751
Репутация: +  184  -
Профиль   Отправить e-mail  

маленький вопрос по os.system, os.popen ...

Используй subprocess.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Фев. 1, 2021 17:18:27

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1359
Репутация: +  119  -
Профиль   Отправить e-mail  

маленький вопрос по os.system, os.popen ...

kancler
Шаманил с кавычками в разных местах - все равно не получается.
экранируйте слеши
 \\
или r перед ссылкой

Отредактировано xam1816 (Фев. 1, 2021 17:31:10)

Офлайн

#4 Фев. 1, 2021 19:21:44

kancler
Зарегистрирован: 2020-11-07
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

маленький вопрос по os.system, os.popen ...

Rodegast
Используй subprocess.
subrocess, к сожалению, блокирует вызывающую программу

Офлайн

#5 Фев. 1, 2021 19:28:14

kancler
Зарегистрирован: 2020-11-07
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

маленький вопрос по os.system, os.popen ...

xam1816
это тоже не помогает

Офлайн

#6 Фев. 1, 2021 19:35:13

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1359
Репутация: +  119  -
Профиль   Отправить e-mail  

маленький вопрос по os.system, os.popen ...

kancler
это тоже не помогает
у меня работает,
 os.system(pypath + ' ' + cmdline)

попробуй просто название файла без пути
 echo.py

Отредактировано xam1816 (Фев. 1, 2021 19:36:22)

Офлайн

#7 Фев. 1, 2021 19:39:15

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

маленький вопрос по os.system, os.popen ...

kancler
кто-нибудь знает, как можно это обойти?
Конечно знаем. На первой же лекции студентам говорю - не умеете пользоваться командной строкой - не дейлайте в windows пути с пробелом. Не делайте пути содержащие не ascii символы. Да и в любой ОС это ни к чему.

Так что лучше снесите ваш питон, возьмите нормальный с сайта и поставьте его для всех пользователей. Получите стандартынй путь без пробелов C:\python39.

system по сути воспроизводит то что вы вводите в командной строке. Шаманьте в командной строке, потом, как заработает переносите в питон, не забывая экранировать слеши.

kancler
subrocess, к сожалению, блокирует вызывающую программу
Что вы имеете ввиду?
Я правда не думаю что subrocess хоть чтото даст отличное от system



Отредактировано doza_and (Фев. 1, 2021 19:41:26)

Офлайн

#8 Фев. 1, 2021 21:48:32

kancler
Зарегистрирован: 2020-11-07
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

маленький вопрос по os.system, os.popen ...

xam1816
Работает, если не больше одного из путей оказывается с пробелами. Спасибо!

Отредактировано kancler (Фев. 1, 2021 21:56:04)

Офлайн

#9 Фев. 1, 2021 21:55:38

kancler
Зарегистрирован: 2020-11-07
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

маленький вопрос по os.system, os.popen ...

doza_and
сценарий создает всплывающие и при вызове родительские блокируется при использовании subprocess и system
Смог побороть только при использовании не больше одного пути с пробелами. Спасибо за помощь!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version