Я хочу создать короткий скрипт, который перебирает все файлы .ui и .qrc в папке и вызывает pyuic4 и pyrcc4 соответственно для каждого файла, генерируя соответствующие файлы .py.
Для .qrcфайлов работает следующее, потому что pyrcc4 - это .exe-файл, который можно вызвать с помощью subprocess.Popen
for qrcFile in glob.glob("*.qrc"):
pyFile = qrcFile[:-4] + '.py'
print('Generating ' + str(pyFile) + ' from ' + str(qrcFile))
# pyrcc4 input.qrc -o output.py
params = [r"pyrcc4", str(qrcFile), "-o", str(pyFile)]
subprocess.Popen(params)
, но для файлов .ui это не работает, потому что pyuic4 - это файл .bat.
Iпробовал:
1:
for file in glob.glob("*.ui"):
filename = file[:-3] + '.py'
print('Generating ' + str(filename) + ' from ' + str(file))
# pyuic4 input.ui -o output.py
command = 'pyuic4.bat ' + str(file) + '-o' + str(filename)
os.system(str(command))
но я получаю:
Generating aboutGUI.py from aboutGUI.ui
'C:/Program' is not recognized as an internal or external command,
2: то же, что 1, но я заменил os.system (str (команда)) с subprocess.call (str (команда)) .Тот же результат.
3:
batFileName = "ui_generator.bat"
f = open(batFileName, "w+")
f.write("@echo off\n")
filestring = ''
for uiFile in glob.glob("*.ui"):
pyFile = uiFile[:-3] + '.py'
print('Adding: ' + str(pyFile) + ' from ' + str(uiFile))
filestring = filestring + "pyuic4 " + str(uiFile) + " -o " + str(pyFile) + " && "
f.write(filestring[:-4])
f.close()
subprocess.call(batFileName)
то же самое 'C: / Program' не распознается ... ошибка
Это я действительноне понимаюПотому что, если я вручную запускаю сгенерированный BAT-файл, он делает то, что должен, но если я вызываю его из python, он отображает ошибку.А если я заменю subprocess.call (batFileName) на os.system (batFileName) или os.system ('start cmd / k' + str (batfilename)) он только перемещает ошибку C: / Program во вновь открывшемся окне cmd.
Как я могу решить эту проблему?
Я серьезно рассмотрел
os.rename('C:\Program Files','C:\ProgramFiles')
os.system('start cmd /k set PATH=%PATH%;C:\ProgramFiles\Anaconda3\python.exe')
ПРИМЕЧАНИЕ: pyuic4 вызывается из
C:\Program Files\Anaconda3\Library\bin\pyuic4.bat
РЕДАКТИРОВАТЬ: я пробовал большинство вещей из здесь , но это не работает.Та же ошибка.