我正在使用Pyinstaller在Mac OS X上制作.app软件包,我的应用程序生成一个config.ini,脚本版本运行完美,但是当它是.app时,它不起作用。 我正在使用ConfigParser进行读写。 我正在使用Pyside进行GUI。 它不会生成我的.ini文件,因此它不会读取或写入。 是的,它是一个动漫通知器,每次都不厌其烦。
代码:
import sys
import urllib2
import ConfigParser
import re
import time
import thread
import atexit
from datetime import date
import lxml.html as lx
from PySide.QtCore import *
from PySide.QtGui import *
from pync import Notifier
def layout_widgets(self, layout):
return (layout.itemAt(i) for i in range(layout.count()))
def notify(self):
while True:
config.read('animeConfig.ini')
for newAnime in animeNotify.xpath('//*[@id="frontpage_left_col"]//*[@class="blue"]/text()'):
if config.has_section(newAnime):
for newEp in animeNotify.xpath('//*[@id="frontpage_left_col"]//*[text()="'+newAnime+'"]/parent::h2/following-sibling::h3/a/text()'):
if not config.has_option(newAnime, newEp):
Notifier.notify(newEp+' has been uploaded!', title=newAnime+' '+newEp.lower(), open='http://www.animeseason.com' +
animeNotify.xpath('//*[@id="frontpage_left_col"]//*[text()="'+newEp+'"]/@href')[0])
m = re.findall('\d+', newEp)
config.set(newAnime, newEp, int(m[0]))
with open('animeConfig.ini', 'wb') as configFile:
config.write(configFile)
time.sleep(300)
def checkChecked(self):
while True:
config.read('animeConfig.ini')
for checkbox in self.layout_widgets(self.vLayout):
if checkbox.widget().isChecked() and not config.has_section(checkbox.widget().text()):
config.add_section(checkbox.widget().text())
for anime in animeList.xpath('//*[@class="series_alpha"]/li/span/preceding-sibling::a/text()'):
if config.has_section(anime):
self.EUrl = animeList.xpath('//*[@class="series_alpha"]/li/*[text()="'+anime+'"]/@href')[0]
self.EUrl = lx.parse(urllib2.urlopen("http://www.animeseason.com" + self.EUrl))
for ep in self.EUrl.xpath('//tr/*[@class="text_center"]/a/text()'):
config.set(anime, 'episode '+ep, ep)
with open('animeConfig.ini', 'wb') as configFile:
config.write(configFile)
elif not checkbox.widget().isChecked() and config.has_section(checkbox.widget().text()):
config.remove_section(checkbox.widget().text())
with open('animeConfig.ini', 'wb') as configFile:
config.write(configFile)
time.sleep(300)
我也在使用线程模块,以便它们可以同时运行。 就像这样:
thread.start_new_thread(self.notify, ())
thread.start_new_thread(self.checkChecked, ())
遗漏了GUI部分,因为这不是很有趣,我想。