как выполнить запись в командное окно Windows из python

#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