[Python] Directory verwijderen met wildcard in pad

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik probeer met os.rmdir een lege directory in windows te verwijderen
voorbeeld: d:/naam-bekend/naam-onbekend/naam-bekend2

het gaat om de directory in de 3e level van het path [naam-bekend2]
ik gebruik de volgende code regel
os.rmdir('d:/naam-bekend/*/naam-bekend2')

ik krijg de volgende foutmelding:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect: 'd:/naam-bekend/*/naam-bekend2'

Ik vermoed dat dit komt door het gebruik van * als sub-directory, maar aangezien die naam random is zie ik geen andere mogelijkheid. De rest van het path zijn vaststaande namen.

kan iemand mij helpen aan een oplossing, dank u.
...

Beste antwoord (via Verwijderd op 06-03-2016 12:28)


  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Om je in ieder geval een duwtje in de goede richting te geven. Kijk eens naar glob (https://docs.python.org/2/library/glob.html), daar zie je dat je dat soort wildcards kan gebruiken. Je kan waarschijnlijk op die manier de juiste pathnames vinden en dan die verwijderen.

Engineering is like Tetris. Succes disappears and errors accumulate.

Alle reacties


Acties:
  • 0 Henk 'm!

  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 17:31

MAX3400

XBL: OctagonQontrol

Verwijderd schreef op donderdag 03 maart 2016 @ 11:52:

kan iemand mij helpen aan een oplossing, dank u.
...
Het zou handig zijn als je je code post die je gebruikt; ik ben geen programmeur maar het lijkt erop dat jij code hebt gebouwd die geen recursive zoek-opdracht start en per gevonden directory de padnaam teruggeeft aan je rmdir-commando.

Aangezien je * gebruikt, wat door veel programmeertalen wordt gezien als een wildcard (voor 1 of meer karakters), valt je code waarschijnlijk meteen over het invullen van * aangezien je hier geen enkele definitie voor het opgezet?

Mijn advertenties!!! | Mijn antwoorden zijn vaak niet snowflake-proof


Acties:
  • 0 Henk 'm!

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
Je hebt niet duidelijk gemaakt om welke taal het gaat, ik ga er maar vanuit dat je Python gebruikt? De documentatie geeft geen impressie dat een regular expression, of dergelijke * matching, mogelijk is. Dat verklaart ook gelijk waarom de error is dat je map niet bestaat.

Je zult dus zelf door alle mappen moeten loopen en de juiste vinden om te verwijderen.

Freelance Unity3D developer


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

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Om je in ieder geval een duwtje in de goede richting te geven. Kijk eens naar glob (https://docs.python.org/2/library/glob.html), daar zie je dat je dat soort wildcards kan gebruiken. Je kan waarschijnlijk op die manier de juiste pathnames vinden en dan die verwijderen.

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo, alvast bedankt voor de reacties. Ik gebruik Python om de codes te schrijven.
Het gaat er inderdaad om de wildcard te omzeilen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dan heb je toch alle informatie die je nodig hebt in de bovenstaande twee reacties?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is mij gelukt, ik ben aan de slag gegaan met glob en shutil;
het stukje code ziet er als volgt uit
import os, glob, shutil
dirnaam = "d:/naam-bekend/naam-onbekend/naam-bekend2"
for name in glob.glob(dirnaam):
... shutil.rmtree(name)
Pagina: 1