Форум сайта python.su
Добрый день.
Я совсем недавно приступил к изучению 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)
Офлайн
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]
Офлайн
Спасибо за ответ!
Пробовал это вариант, к сожалению это проблемы не решает.
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)
Офлайн
А так?
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])
Офлайн
И так пробовал, но теперь ругается на shell
File "C:\Users\troyanov\bmfc.py", line 13 shell=True, ^ SyntaxError: invalid syntax
Офлайн
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)
>>> call(["calc"],shell=True,stdout=PIPE, stderr=PIPE) 0 >>> call(["calc1"],shell=True,stdout=PIPE, stderr=PIPE) 1 >>>
>>> 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)
Офлайн
Спасибо!! Разобрался!!
Офлайн