Липкий от аргумента к файлу для чтения

#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: