Найти - Пользователи
Полная версия: Командная строка
Начало » Центр помощи » Командная строка
1
Tesla
Добрый день.

Я совсем недавно приступил к изучению pythona.
В процессе обучения решил написать простую тулзовинку для управления отдельной программы.
Узнал что эта программа поддерживает работу с командной строкой.
И понимает всего три параметра:

-с fontconfig.bmfc: Имена файлов конфигурации с опциями для генерации шрифта.
-о outputfile.fnt: Имена выходного файла шрифта.
-t TextFile.txt: Необязательный параметр, что имена в текстовый файл. Все символы, присутствующие в текстовый файл будет добавлен к шрифту.

Немного погуглив выбрал модуль subprocess он позволяет создавать процессы.
В итоге получилось запустить программу но не получается передать ей нужные мне параметры.

from subprocess import Popen, PIPE
proc = Popen(
    "D:/SVNNEW/games/PlaygroundPlatformEngine/pgp_client_last/branches/alpha/tools/bmfont/bmfont.exe", # путь к .exe файлу программы
    -с "D:/SVNNEW/games/PlaygroundPlatformEngine/pgp_client_last/branches/alpha/bin/pgp/core/fonts_hd/.bmfc/ArialUnicode20Bold_zh@2x.bmfc", # путь конфигу с настройками
    shell=True,
    stdout=PIPE, stderr=PIPE
)
proc.wait()

получаю вот такую банальную ошибку

  File "C:\Users\troyanov\bmfc.py", line 4
    -с "D:/SVNNEW/games/PlaygroundPlatformEngine/pgp_client_last/branches/alpha/bin/pgp/core/fonts_hd/.bmfc/ArialUnicode20Bold_zh@2x.bmfc",^
                                                
SyntaxError: invalid syntax
                                                   

Подскажите пожалуйста как именно это нужно сделать ?
Желательно с примером, за ранние душевное спасибо!
alexbadaloff
from subprocess import Popen, PIPE
proc = Popen(
"D:\\SVNNEW\\games\\PlaygroundPlatformEngine\\pgp_client_last\\branches\\alpha\\tools\\bmfont\\bmfont.exe", "-с", # путь к .exe файлу программы
"D:\\SVNNEW\\games\\PlaygroundPlatformEngine\\pgp_client_last\\branches\\alpha\\bin\\pgp\\core\\fonts_hd\\.bmfc\\ArialUnicode20Bold_zh@2x.bmfc", # путь конфигу с настройками
shell=True,
stdout=PIPE, stderr=PIPE
)
proc.wait()[\\code]
Tesla
Спасибо за ответ!

Пробовал это вариант, к сожалению это проблемы не решает.

Traceback (most recent call last):
  File "C:\Users\troyanov\bmfc.py", line 6, in <module>
    stdout=PIPE, stderr=PIPE
  File "C:\Python34\lib\subprocess.py", line 757, in __init__
    raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer
[Finished in 0.1s with exit code 1]
alexbadaloff
А так?
from subprocess import Popen, PIPE
subprocess.call(["D:\\SVNNEW\\games\\PlaygroundPlatformEngine\\pgp_client_last\\branches\\alpha\\tools\\bmfont\\bmfont.exe", "-с", # путь к .exe файлу программы
"D:\\SVNNEW\\games\\PlaygroundPlatformEngine\\pgp_client_last\\branches\\alpha\\bin\\pgp\\core\\fonts_hd\\.bmfc\\ArialUnicode20Bold_zh@2x.bmfc", # путь конфигу с настройками
shell=True,
stdout=PIPE, stderr=PIPE])
Tesla
И так пробовал, но теперь ругается на shell

  File "C:\Users\troyanov\bmfc.py", line 13
    shell=True,
         ^
SyntaxError: invalid syntax
alexbadaloff
from subprocess import Popen, PIPE, call
call(["D:\\SVNNEW\\games\\PlaygroundPlatformEngine\\pgp_client_last\\branches\\alpha\\tools\\bmfont\\bmfont.exe", "-с", "D:\\SVNNEW\\games\\PlaygroundPlatformEngine\\pgp_client_last\\branches\\alpha\\bin\\pgp\\core\\fonts_hd\\.bmfc\\ArialUnicode20Bold_zh@2x.bmfc"
],shell=True,
stdout=PIPE, stderr=PIPE)

Если возвращает 0, значит выполнилась успешно. 1 - не выполнилась.

>>> call(["calc"],shell=True,stdout=PIPE, stderr=PIPE)
0
>>> call(["calc1"],shell=True,stdout=PIPE, stderr=PIPE)
1
>>> 

Чтобы увидеть ошибку, то можно отключить выхлоп в shell, и получить его при выполнении:
>>> call(["calc1"],shell=False,stdout=PIPE, stderr=PIPE)
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    call(["calc1"],shell=False,stdout=PIPE, stderr=PIPE)
  File "C:\Python34\lib\subprocess.py", line 537, in call
    with Popen(*popenargs, **kwargs) as p:
  File "C:\Python34\lib\subprocess.py", line 858, in __init__
    restore_signals, start_new_session)
  File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] Не удается найти указанный файл
>>> 
Tesla
Спасибо!! Разобрался!!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB