Скрипт не перегоняется в exe, так как у cx-freeze есть баг ((((((
http://sourceforge.net/p/cx-freeze/bugs/33/?page=2В качестве аргумента командной строки у меня выступает имя файла
которое передается скрипту. Формат такой:
viewer.py test.xml
Написал так, если запускать из командной строки так:
viewer.pyw test.xml то все работает.
Если навести файл test.xml на viewer.pyw, то не работает.. точнее работает, как оказалось потом, но не так как должно. Просто он почему-то копирует файл xml не в папку, где лежит скрипт c:\viewer\, а в папку C:\WINDOWS\system32
# -*- coding: utf-8 -*-
import sys, os
from PyQt4 import QtCore, QtGui
from formviewer import Ui_MainWindow
import xml.etree.ElementTree as etree
class MainWindow(QtGui.QMainWindow, Ui_MainWindow): # или QWidget QMainWindow
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setAcceptDrops(True)
self.setupUi(self)
QtCore.QObject.connect(self.action_2, QtCore.SIGNAL('triggered()'),QtGui.qApp, QtCore.SLOT('quit()'))
QtCore.QObject.connect(self.action, QtCore.SIGNAL('triggered()'), self.showDialog)
# обрабатываем параметры с коммандной строки
try:
input_file = sys.argv[1]
except:
input_file = None
if input_file and input_file[-3:].upper() == "XML":
tempXmlFile = os.path.basename(input_file)
shutil.copy(input_file, os.getcwd()) #копируем xml в папку со скриптом
fileName = os.path.join(os.getcwd(), tempXmlFile)
# отправляем на обработку в пассер
self.showfile(fileName)
def showfile(self, fileName):
# тут начинаем пассерить документ....