#python #windows #window #command #python-2.6
#python #Windows #окно #команда #python-2.6
Вопрос:
Я использую Python 2.6, я хотел бы ввести инструкции в командное окно из python. Мне просто нужен правильный метод. Однако в качестве указания я показываю несколько неудачных попыток. Вот несколько пробных версий и типы ошибок, которые я получаю:
первая попытка
import subprocess
proc = subprocess.Popen('cmd.exe', stdin = subprocess.PIPE, stdout = subprocess.PIPE)
stdout, stderr = subprocess.communicate('cd Documents')
AttributeError: 'module' object has no attribute 'communicate'
Вторая попытка:
import subprocess
proc = subprocess.Popen('cmd.exe', stdin = subprocess.PIPE, stdout = subprocess.PIPE)
proc.stdin.write("cd Documents")
Нет сообщения об ошибке, однако ничего не происходит. Если я пытаюсь открыть папку, которая не существует, я получаю то же самое. Командное окно остается пустым
Третья попытка:
os.system('cd Documents')
Ничего не происходит, возвращается 1, однако, если я попытаюсь открыть папку, которая не существует, она тоже вернет 1:
os.system('cd Documentss')
Последняя попытка
a=os.popen("C:\system32\cmd.exe",'w')
a.write("cd Documents")
IOError: [Errno 22] Invalid argument
Спасибо за вашу помощь
Комментарии:
1. зачем вам нужно это делать?
os.chdir("C:\..")
Недостаточно?
Ответ №1:
Ваша первая попытка прошла правильно, за исключением того факта, что вы вызываете модуль вместо вашего вновь созданного класса. Вам нужно использовать
proc.communicate('cd Documents')
Комментарии:
1. Большое спасибо за ваш ответ. Если я делаю это, я больше не получаю сообщение об ошибке. Однако, если я пишу это, окно просто закрывается, независимо от того, существует файл или нет. Также ничего не появляется в командном окне после того, как была написана первая строка
Ответ №2:
Ваша третья попытка:
os.system('your command')
работает. Я использовал, и все в порядке:
os.system('ipconfig -renew') # Renew all connections windows
Попробуйте:
os.system('ipconfig -release') # you will disconnect from your network
Затем используйте:
os.system('ipconfig -renew') # network will back