2016-11-09 8 views
0

Я работаю над личным проектом как очень любительский программист, и для этого мне нужно, чтобы python передал cmd для запуска внешней программы через командную строку.Могу я сказать Python выполнить командную строку в cmd?

Например, мне требуется chdir ("C:\blah\blah") на Python и запустите externalprogram -w "<destination>\newName.fileType>" "<source>\*.*".

Я очень потерял, как это сделать, и любая помощь будет принята с благодарностью.

Пока мой код выглядит следующим образом

import os 

os.chdir('C:\Program Files (x86)\<externalProgram>') 
os.system('<externalCommand> "<destination>\file.fileType" "<source>\*.*"') 

До сих пор не могу заставить его работать, хотя никаких ошибок не быть размещены в оболочке.

+2

Обычно вы можете использовать [subprocess.call] (http://docs.python.org/2/library/subprocess.html#using-the-subprocess-module) 'импорта подпроцесс; subprocess.call (['C: \ blah \ blah \ newName.fileType']) ', [Как выполнить программу из python?] (Http://stackoverflow.com/questions/204017/how-do- i-execute-a-program-from-python-os-system-fail-due-to-spaces-in-path) – davedwards

+0

Возможно, вы хотите, чтобы эффект 'chdir' длился/находился на вашем процессе/скрипте python - [ os.chdir (путь)] (https://docs.python.org/2/library/os.html#os.chdir)? – greybeard

+0

Не могли бы вы «принять» предпочтительный ответ ниже? Вы можете принять свое, если хотите. Чтобы принять, нажмите на отметку рядом с ответом, который вы предпочитаете. Пожалуйста, подумайте над тем, чтобы другие люди считали полезными; это не обязательно, но это хорошо. Наконец, я вижу, что ответ Пруны не ответил - пожалуйста, подумайте о том, чтобы ответить всем, если сможете. – halfer

ответ

0

Самый простой способ сделать это:

import os 
os.system('your command') 
+0

Я пробовал это, и мой cmd открылся и закрылся, и ничего не двигалось. Как я могу проверить, в чем проблема? – Fishtallen

+0

@Hallquist Если вы пытаетесь выполнить 'os.system ('chdir your/dir')', то это не будет иметь никакого эффекта. Он открывает в нем каталог cmd changes и закрывается.Если вы хотите изменить рабочий каталог для текущего скрипта python, вы можете использовать 'os.chdir ('your/dir')' (как предлагалось @greybeard) –

+0

Я пробовал и обновлял свой пост. Я ценю, что вы нашли время, чтобы помочь! – Fishtallen

0

Да. Вам нужен os.system() метод, расположенный у основания this page. Вы передаете команду, которую хотите запустить как строку.

Кроме того, многие системные команды UNIX встроены в этот пакет; вы можете найти тот, который вы хотите, в качестве конкретного вызова.

0

Ваши кавычки?

os.system('<command> "<destination>\file.fileType" "<source>\*.*") #still in quote 

начинается с "заканчивается"

os.system('<command> "<destination>\file.fileType" "<source>\*.*" ') #closed properly 

Если вы не хотите, котировки в питона, чтобы быть признанными в кавычки поставить обратную косую черту перед

print (" \" ") # prints out " 

говорят добавить параметры к команде

destination = "folder\file.fileType" 
source = "source\*.*" 
os.system('<command> \" ' + destination + ' \" '+ source+' \" ') #closed 
+0

Итак, у меня есть, чтобы напечатать, как я хотел, но я не могу заставить его ничего делать. Он просто вспыхивает, и ничего не происходит. Кажется, я не могу правильно изменить каталог, и он остается на пользователе \ pthyon. Как я могу заставить его запускать 2 или более команды подряд в одном и том же окне cmd? – Fishtallen

+0

импорт os os.chdir ('C: \ Program Files (x86)') os.system ("cd") os.system ("PAUSE") –

0

Итак, мои основные проблемы не заключались в добавлении/D, когда для моего изменения каталога также изменился диск, а также использование «& &».

import os 
changeDir = ('cd /D C:\\Program Files (x86)\\externalProgram') 
externalCommand = '<Command> \"<destination>\\newName.fileType\" \"<source>\\*.*\"' 
os.system(changeDir + ' && ' externalCommand)