Python: str object not callable

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • 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: 07:31
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:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
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.

Je eigen tweaker.me redirect

Over mij


Acties:
  • +1 Henk 'm!

  • Barreljan
  • Registratie: December 2001
  • Laatst online: 10-06 15:38

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
  • +2 Henk 'm!

  • eatsoup
  • Registratie: November 2009
  • Laatst online: 07:31
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

Acties:
  • 0 Henk 'm!

  • DonJunior
  • Registratie: Februari 2008
  • Laatst online: 09:55
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?

*sowieso


Acties:
  • 0 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Nu online
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.


Acties:
  • +3 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
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.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • 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.

Acties:
  • 0 Henk 'm!

  • 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.

Acties:
  • 0 Henk 'm!

  • 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