Toon posts:

Python: str object not callable

Pagina: 1
Acties:

Onderwerpen

Vraag


  • aptonia
  • Registratie: Maart 2021
  • Laatst online: 02-07-2022
Ik probeer (al enige tijd) een python programma te schrijven voor taaldetectie. Het meeste werkt, maar wat me niet lukten om het programma te laten lopen in een willekeurige working directory. Zolang ik een absoluut path ingeef, geen probleem, probeer ik te werken met de current working directory, loopt het mis.

Dit is het relevante deel van de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import re  # de module regular expressions wordt geïmporteerd.
from pathlib import Path  # importeer path module
import os
import shutil

source_dir = os.getcwd()
[b]files = source_dir('*.html')  # Groep files is te vinden in het path met extensie html[/b]
txt_files = source_dir('*.txt')  # Groep txt_files is te vinden in het path met extensie txt

languages = ["dutch", "english", "french", "german", "italian", "spanish"]  # Lijst van talen

decode = {'à': 'a', 'á': 'a', 'ä': 'a', 'é': 'e', 'è': 'e', 'ê': 'e', 'ë': 'e', 'î': 'i',
          'í': 'i', 'ô': 'o', 'ö': 'o', 'ò': 'o', 'ó': 'o', 'ù': 'u', 'ú': 'u',
          'ü': 'u', 'ç': 'c', 'ß': 'b', 'ñ': 'n'}  # Dictionary van te vervangen karakters


Dit is de foutmelding:

code:
1
2
3
4
 Traceback (most recent call last):
  File "/Users/vickygwosdz/Desktop/VickyGwosdzExamProject2eZittijd/0_Omzetten_HTML_Bestand.py", line 12, in <module>
    files = source_dir('*.html')  # Groep files is te vinden in het path met extensie html
TypeError: 'str' object is not callable


Kan iemand me een tip geven waar het misloopt? Het is een huistaak, dus geen kant en klare oplossingen aub ;-)

Thanks!!!

Beste antwoord (via aptonia op 02-07-2022 16:11)


  • eatsoup
  • Registratie: November 2009
  • Laatst online: 30-01 15:46
os.getcwd() geeft een string terug, vervolgens gebruik je het als een functie, dat gaat niet.

Daarnaast importeer je Path zonder het te gebruiken, Path heeft ook Path.cwd(), dit geeft je een Path object waar je makkelijker mee kan werken dan met strings

Path heeft ook nog Path.glob() daarmee kan je met wildcards werken om je *.html bestanden op te halen

Alle reacties


Acties:
  • +1Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 17:29

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

aptonia schreef op dinsdag 28 juni 2022 @ 11:35:
Kan iemand me een tip geven waar het misloopt? Het is een huistaak, dus geen kant en klare oplossingen aub ;-)
Dat sowieso niet ;)
Maar de vraag is vooral: wat heb je zélf al gezocht en gevonden? Zie ook onze Quickstart.Ook de vragen die er staan wanneer je hier een nieuw topic opent staan er natuurlijk niet voor niets ;)
Mijn vraag
...

Relevante software en hardware die ik gebruik
...

Wat ik al gevonden of geprobeerd heb
...

[Voor 5% gewijzigd door RobIII op 28-06-2022 11:44]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


Acties:
  • +1Henk 'm!

  • Barreljan
  • Registratie: December 2001
  • Laatst online: 03-02 15:55

Barreljan

...Zoom-Zoom...

Nouja dat is simpel:

code:
1
2
3
4
5
source_dir = os.getcwd()

>>> import os
>>> type(os.getcwd())
<class 'str'>


Levert een string op. Dat is geen object of class instance die nog weer een callable item heeft.

Time Attacker met de Mazda 323F 2.5 V6 J-spec | PV output


Acties:
  • Beste antwoord
  • +2Henk 'm!

  • eatsoup
  • Registratie: November 2009
  • Laatst online: 30-01 15:46
os.getcwd() geeft een string terug, vervolgens gebruik je het als een functie, dat gaat niet.

Daarnaast importeer je Path zonder het te gebruiken, Path heeft ook Path.cwd(), dit geeft je een Path object waar je makkelijker mee kan werken dan met strings

Path heeft ook nog Path.glob() daarmee kan je met wildcards werken om je *.html bestanden op te halen

  • DonJunior
  • Registratie: Februari 2008
  • Laatst online: 17:04
Doet os.getcdw() wat jij denkt dat ie doet.
kijk eens op: https://www.tutorialspoint.com/python/os_getcwd.htm
En print eens naar de output .. klopt wat daar uitkomt met wat je verwacht?

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 15:58
Ik zou eens op zoek gaan naar os.listdir

En verder zijn er vele modules die dit probleem voor je oplossen
zie:
https://stackoverflow.com...nguage-of-a-piece-of-text

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


  • RobIII
  • Registratie: December 2001
  • Laatst online: 17:29

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

aptonia schreef op dinsdag 28 juni 2022 @ 11:35:
code:
1
2
3
decode = {'à': 'a', 'á': 'a', 'ä': 'a', 'é': 'e', 'è': 'e', 'ê': 'e', 'ë': 'e', 'î': 'i',
          'í': 'i', 'ô': 'o', 'ö': 'o', 'ò': 'o', 'ó': 'o', 'ù': 'u', 'ú': 'u',
          'ü': 'u', 'ç': 'c', 'ß': 'b', 'ñ': 'n'}  # Dictionary van te vervangen karakters
Overigens is dit zéér zelden tot nooit een goed idee... Als je kunt aangeven waarom je dit doet kunnen we je vrijwel zeker op een beter alternatief wijzen.

[Voor 9% gewijzigd door RobIII op 30-06-2022 16:40]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • aptonia
  • Registratie: Maart 2021
  • Laatst online: 02-07-2022
RobIII schreef op dinsdag 28 juni 2022 @ 11:43:
[...]

Dat sowieso niet ;)
Maar de vraag is vooral: wat heb je zélf al gezocht en gevonden? Zie ook onze Quickstart.Ook de vragen die er staan wanneer je hier een nieuw topic opent staan er natuurlijk niet voor niets ;)


[...]
Excuses ;-)
Maar dus Wat heb ik zelf al gezocht of geprobeerd

Ik heb de code "los" getest. Ik heb de code getest op een stuk tekst wat ik geforceerd ingelezen heb. Dan werkt het prima. Het is misschien niet perfect geschreven, maar het doet wat het moet doen.

Dan heb ik de verwijzing gemaakt naar een absoluut adres en ook dan doet het programma wat ik moet doen.

Eens ik wist dat het programma op zich deed wat het moest doen, heb ik de documentatie opgezocht voor het os.gwd commando en volgens mij zou het wel moeten doen wat ik wil. Duidelijk is dat niet het geval, maar ik weet niet waarom.

Ik heb de foutmelding opgezocht, gegoogeld, maar in alle eerlijkheid word ik niet wijzer van de uitleg daarbij.

  • aptonia
  • Registratie: Maart 2021
  • Laatst online: 02-07-2022
RobIII schreef op donderdag 30 juni 2022 @ 16:39:
[...]

Overigens is dit zéér zelden tot nooit een goed idee... Als je kunt aangeven waarom je dit doet kunnen we je vrijwel zeker op een beter alternatief wijzen.
Ik moet letters met accenten vervangen door de cleane versie. Opdracht is om een dictionary te gebruiken.

Ik had dit eerst geprobeerd door alle geaccepteerde a's in een keer te vervangen door een gewone a, etc... maar dat werkte niet. Dit wel.

Ik heb niet ergens een andere oplossing gevonden.

  • aptonia
  • Registratie: Maart 2021
  • Laatst online: 02-07-2022
eatsoup schreef op dinsdag 28 juni 2022 @ 11:44:
os.getcwd() geeft een string terug, vervolgens gebruik je het als een functie, dat gaat niet.

Daarnaast importeer je Path zonder het te gebruiken, Path heeft ook Path.cwd(), dit geeft je een Path object waar je makkelijker mee kan werken dan met strings

Path heeft ook nog Path.glob() daarmee kan je met wildcards werken om je *.html bestanden op te halen
Bedankt! Dit heeft me uiteindelijk op de juiste weg gezet.

Ik heb mijn oorspronkelijke boosdoener vervangen door:
code:
1
source_dir = Path(os.getcwd())


En nu gaat het programma netjes zoeken op de juiste plaats.
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee