Здравствуйте, у меня возникла проблема с моей программой, когда дело доходит до функции диалога с файлом, которую у меня есть.UnicodeDecodeError с QFileDialog в PyQt
Сначала вот мой код:
def getFileInfo(self):
global logName
logName = QtGui.QFileDialog.getOpenFileName()
return logName
def getFileName(self):
return logName
def compareAction(self):
def process(infile, outfile, keywords):
keys = [[k[0], k[1], 0] for k in keywords]
endk = None
with open(infile, 'rb') as fdin:
with open(outfile, 'ab') as fdout:
fdout.write("<" + words + ">" + "\r\n")
for line in fdin:
if endk is not None:
fdout.write(line)
if line.find(endk) >= 0:
fdout.write("\r\n")
endk = None
else:
for k in keys:
index = line.find(k[0])
if index >= 0:
fdout.write(line[index + len(k[0]):].lstrip())
endk = k[1]
k[2] += 1
if endk is not None:
raise Exception(endk + "Not found before end of file")
return keys
clearOutput = open('test.txt', 'wb')
clearOutput.truncate()
clearOutput.close()
outputText = 'test.txt'
end_token = "[+][+]"
inputFile = logName
start_token = self.serialInputText.toPlainText()
split_start = start_token.split(' ')
for words in split_start:
process(inputFile,outputText,((words + "SHOWALL"),))
fo = open(outputText, "rb")
text = fo.read()
print start_token + '\r\n'
print split_start
print inputFile
Хорошо, Таким образом, общая идея этого куска кода захватывая некоторые введенную текст из TextEdit в моем PyQt графического интерфейса пользователя. Затем, разделив эту строку на список, который можно использовать для «scan» через файл, и если есть какие-либо соответствия, распечатайте эти соответствия в другой текстовый документ.
Шаги:
- пользователь вводит текст в TextEdit
- Тексты внутри TextEdit получает хранятся в QString
- Это QString имеет место в качестве разделителя, чтобы мы разделить каждую запись в списке.
This is a list
то есть ->[u'This', u'Is', u'A', u'List']
(список имеет U-за мой код с использованиемsip
) - Теперь, когда мы имеем эту QStringList мы можем передать ее через мою
def process
функции. - Нам нужен файл для поиска, очевидно, здесь используются функции и
def GetFileName(Self)
. - Итак, после ввода пользователем некоторого текста, выбранного файла для поиска, он/она нажмет кнопку, позволяет называть его CompareButton и выполняет функцию
def compareAction(self)
.
Выпуск
В настоящее время моя проблема эта ошибка, которая появляется после выполнения всех шагов он терпит неудачу на этапе № 6. Это моя ошибка:
Traceback (most recent call last):
File "RETRACTED.py", line 278, in compareAction
process(inputFile,outputText,((words + "SHOWALL"),))
File "RETRACTED.py", line 260, in process
index = line.find(k[0])
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
Я не уверен, как почему эта ошибка происходит. Я искал аналогичную проблему, но я считаю, что она связана с моей функцией process
. Я не уверен