脚本使用 PyQt4.10.1 和 Python2.7 编写
我一直在研究一个简单的工具,允许用户搜索路径,然后将它们保存到配置文件中,供另一个程序稍后读取。如果已经有一个配置文件,那么脚本会读取它并显示现有路径供用户编辑或添加。我写了一个 gui 以使其尽可能用户友好。我有几个问题。
首先,当我读入配置文件时,我使用以下代码:
try:
self.paths = open(configFile, "r")
self.data = self.paths.readlines()
self.paths.close()
except:
self.data = None
if self.data is not None:
for line in self.data:
print line
#self.listDelegate is the model for my QListView
self.listDelegate.insertRows(0, 1, line)
当我这样做时,我会在我的 gui 中得到以下信息:
这(上图)是您第一次输入数据时的样子(在保存数据然后重新打开之前)
这(上图)是保存配置文件然后读回后数据的外观(注意路径下方的额外空间)。
配置文件仅在脚本首次打开时才被读取。以下是配置文件写出时的样子。
C:\Program Files
C:\MappedDrives
C:\NVIDIA
现在所有这些都没什么大不了的,但是当我打开配置文件以使用此工具对其进行编辑时,gui 中的额外空间将被读取为另一个换行符。所以配置文件然后打印为:
C:\Program Files
C:\MappedDrives
C:\NVIDIA
然后每次我编辑文件时问题都会变得越来越大。
这个问题将我引向了第二个问题(我认为这可能是罪魁祸首)。当我将 gui 中的行写入配置文件时,我使用以下代码:
rowCount = self.listDelegate.rowCount()
if rowCount > 0:
myfile = open(configFile, 'w')
for i in range(rowCount):
myfile.write(str(self.listDelegate.index(i).data(role = QtCore.Qt.DisplayRole).toPyObject()))
myfile.write("\n")
myfile.close()
我假设额外换行符的问题是因为我手动添加换行符。问题是我需要每个路径都在自己的行上,以便以后可以使用配置文件。我没有很多编写文本文件的经验,每个人都说逐行写出它们的最简单方法是手动添加换行符。如果有人有更好的想法,我很想听听。
对不起,冗长的解释。如果我不够清楚,请告诉我,我会尝试更好地解释自己。
谢谢您的帮助!