#python-3.x
Вопрос:
Таким образом, первый аргумент-файл для открытия, а второй аргумент-шаблон (или текст) для поиска.
Программа предназначена для сканирования документа и поиска элементов, равных «Шаблону», и печати адреса детектора в «Шаблоне детектора». Я заставил эту программу работать без перегара, но я подумал о том, чтобы добавить ее для удобства использования. Моя проблема заключается в том, что аргумент передается в строку «с открытым(именем файла)».
Это ошибка, которую я получаю:
Traceback (most recent call last):
File "C:/Users/haral/Google Drive (synkroniseres ikke)/Programmering/Programmer/LogSearch/LogSearchGooey.py", line 42, in <module>
main()
File "C:UsersharalPycharmProjectsAutomateBoringStuffvenvlibsite-packagesgooeypython_bindingsgooey_decorator.py", line 134, in <lambda>
return lambda *args, **kwargs: func(*args, **kwargs)
File "C:/Users/haral/Google Drive (synkroniseres ikke)/Programmering/Programmer/LogSearch/LogSearchGooey.py", line 27, in main
with open(filename, 'r') as reader:
TypeError: expected str, bytes or os.PathLike object, not Namespace
import os
import re
from gooey import Gooey, GooeyParser
pattern = ""
# Chosen search pattern
detectorPattern = re.compile(r'dd.ddd')
# Fire alarm detector pattern, etc. 03.040
filename = ""
foundDetector = []
@Gooey
def main():
parser = GooeyParser(description="Testing")
parser.add_argument(
"Filename",
help="Choose a file",
widget="FileChooser"
)
parser.add_argument(
"store",
help="Choose a pattern to search for"
)
filename = parser.parse_args()
with open(filename, 'r') as reader:
# Read and print the entire file line by line
for line in reader:
findLine = re.search(pattern, line)
if findLine is not None:
mo = detectorPattern.search(findLine.string)
mog = mo.group()
if mog not in foundDetector:
foundDetector.append(mog)
for x in foundDetector:
print(x)
if __name__ == '__main__':
main()
Комментарии:
1. в чем заключается ваш вопрос?
2. В чем проблема ? Есть ли ошибки ? Каков ваш ожидаемый и фактический результат ?
3. Я получаю сообщение об ошибке, обновленное в главном потоке.
4. правильный путь таков
filename.Filename
, как вы назвали путь, указанный пользователемFilename
, как указано вparser.add_argument()
5. так
with open(filename.Filename, "r") as reader: