Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 20, 2015 14:52:59

Tesla
Зарегистрирован: 2014-12-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Командная строка

Добрый день.

Я совсем недавно приступил к изучению 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
                                                   

Подскажите пожалуйста как именно это нужно сделать ?
Желательно с примером, за ранние душевное спасибо!

Отредактировано Tesla (Янв. 20, 2015 14:59:59)

Офлайн

#2 Янв. 20, 2015 15:14:51

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

Командная строка

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]



————————–
Истина где-то рядом

Офлайн

#3 Янв. 20, 2015 15:27:44

Tesla
Зарегистрирован: 2014-12-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Командная строка

Спасибо за ответ!

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

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]

Отредактировано Tesla (Янв. 20, 2015 15:28:17)

Офлайн

#4 Янв. 20, 2015 16:08:22

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

Командная строка

А так?

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])



————————–
Истина где-то рядом

Офлайн

#5 Янв. 20, 2015 16:28:26

Tesla
Зарегистрирован: 2014-12-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Командная строка

И так пробовал, но теперь ругается на shell

  File "C:\Users\troyanov\bmfc.py", line 13
    shell=True,
         ^
SyntaxError: invalid syntax

Офлайн

#6 Янв. 20, 2015 16:42:52

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

Командная строка

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] Не удается найти указанный файл
>>> 



————————–
Истина где-то рядом

Отредактировано alexbadaloff (Янв. 20, 2015 16:52:11)

Офлайн

#7 Янв. 21, 2015 15:14:30

Tesla
Зарегистрирован: 2014-12-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Командная строка

Спасибо!! Разобрался!!

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version