我想创建一个短脚本,在文件夹中的所有.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文件
我试过:
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相同,但我用子进程调用(str(command))替换了os.system(str(command))。同样的结果
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调用它,它会显示错误。如果我用os.system(batFileName)或os.system('start cmd/k'+str(batFileName))替换子进程调用(batFileName),它只会在新打开的cmd窗口中移动C:/Program错误
我怎样才能解决这个问题
我认真考虑过
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
编辑:我尝试了here的大部分内容,但都不起作用。同样的错误
目前没有回答
相关问题 更多 >
编程相关推荐