params = commandLine.split(' ')
os.spawnv(os.P_NOWAIT, params[0], params)
params = commandLine.split(' ')
os.spawnv(os.P_NOWAIT, params[0], params)
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
from PyQt4 import QtCore
commandLine = QtCore.QVariant('gedit "~/test.txt"')
commandLine = commandLine.toString()
params = commandLine.split(' ')
os.spawnv(os.P_NOWAIT, params[0], params)
poltergeistЭто спасает, но не до конца. Русские имена файлов не прокатывают:
unicode(commandLine.toString()).split(' ')
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
from PyQt4 import QtCore
commandLine = QtCore.QVariant('C:/WINDOWS/notepad.exe C:/Temp/файл.txt')
params = unicode(commandLine.toString()).split(' ')
os.spawnv(os.P_NOWAIT, params[0], params)
poltergeistИменно в этом и проблема - как правильно преобразовать QString к “обычным” юникодным строкам. В инете не нашёл ничего, кроме советов применять функции str() или unicode(). Но они не помогают, если в строке есть кириллица.
…как результат выполнения Qt-шной функции всегда возвращается QString, а не str/unicode.
# -*- coding: utf-8 -*-
from PyQt4 import QtCore
text = u'Доказательство'
print repr(text)
qtext = unicode(QtCore.QString(text))
print repr(qtext)
Вывод:
u'\u0414\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e'
u'\u0414\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e'