Kmom05 öppna fil via funktion

  • Författare
  • Meddelande

andreaberg

css-hackare

  • Inlägg: 26
  • Blev medlem: 13 aug 2017, 01:16

Kmom05 öppna fil via funktion

Inlägg06 okt 2017, 01:37

Hej

Får felmeddelande när jag försöker köra
Kod: Markera allt
    opts = cli_parser.parse_options()
    if opts["known_args"]["commands"]:
        if opts["known_args"]["commands"] == "lines":
            func.text_lines(opts["unknown_args"])


$ python3 main.py lines phil.txt
Traceback (most recent call last):
File "main.py", line 38, in <module>
main()
File "main.py", line 31, in main
func.text_lines(opts["unknown_args"])
File "/cygdrive/c/Users/Andreas/dbwebb-kurser/python/me/kmom05/analyzer/analyzer.py", line 7, in text_lines
with open(filename) as f:
TypeError: expected str, bytes or os.PathLike object, not list

Varför blir det en lista istället för str så funktionen inte kan ta emot det?

De olika filerna är
Main : https://codeshare.io/2Ko4X8
cli_parse: https://codeshare.io/adArWe
analyzer: https://codeshare.io/G8rjkJ
Användarvisningsbild

Lew

dbwebb

  • Inlägg: 406
  • Blev medlem: 05 sep 2012, 13:42
  • Ort: Karlskrona

Re: Kmom05 öppna fil via funktion

Inlägg06 okt 2017, 07:33

opts["unknown_args"] är en lista och det är den du skickar med till funktionen. Om du istället tar första elementet:
Kod: Markera allt
opts["unknown_args"][0]
så kommer säkert filnamnet skickas med istället.
When in doubt, use brute force.

andreaberg

css-hackare

  • Inlägg: 26
  • Blev medlem: 13 aug 2017, 01:16

Re: Kmom05 öppna fil via funktion

Inlägg06 okt 2017, 14:29

Via denna koden får jag felmeddelande IndexError: list index out of range

Kod: Markera allt
    opts = cli_parser.parse_options()
    if opts["known_args"]["commands"]:
        if opts["known_args"]["commands"] == "lines":
            func.text_lines(opts["unknown_args"][0])


Varför blir det IndexErrror?
Användarvisningsbild

Allinrep

dbwebb

  • Inlägg: 1124
  • Blev medlem: 03 sep 2012, 09:19
  • Ort: Portugal (tillfälligt)

Re: Kmom05 öppna fil via funktion

Inlägg06 okt 2017, 15:14

Troligtvis innehåller inte variablerna det du förväntar dig att de ska ha. Felsök med hjälp av print(variabelnamn) och print(type(variabelnamn)). Läs felmeddelandet, det pekar på exakt fil och exakt rad.
Användarvisningsbild

annettekusma

sql-guru

  • Inlägg: 102
  • Blev medlem: 11 aug 2017, 10:16
  • Ort: Eskilstuna

Re: Kmom05 öppna fil via funktion

Inlägg07 okt 2017, 22:38

Kod: Markera allt
parser.add_argument("filename", help="Which file to analyze")


Ser ut som du säger till programmet att filnamnet är ett argument den ska förvänta sig. Då borde den hamna i known_args, snarare än i unknown_args.

andreaberg

css-hackare

  • Inlägg: 26
  • Blev medlem: 13 aug 2017, 01:16

Re: Kmom05 öppna fil via funktion

Inlägg08 okt 2017, 00:52

Tack för all hjälp! Verkar komma underfund hur jag ska lösa det nu.

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 12 gäster