Ik wil een bestand maken; als het al bestaat, wil ik het verwijderen en opnieuw maken. Ik heb het op deze manier geprobeerd, maar het geeft een Win32-fout. Wat doe ik verkeerd?
try:
with open(os.path.expanduser('~') + '\Desktop\input.txt'):
os.remove(os.path.expanduser('~') + '\Desktop\input.txt')
f1 = open(os.path.expanduser('~') + '\Desktop\input.txt', 'a')
except IOError:
f1 = open(os.path.expanduser('~') + '\Desktop\input.txt', 'a')
Antwoord 1, autoriteit 100%
Je probeert een geopend bestand en de documenten voor os.remove()
staat…
Als u in Windows probeert een bestand te verwijderen dat in gebruik is, wordt er een uitzondering gegenereerd
Je zou de code kunnen veranderen in…
filename = os.path.expanduser('~') + '\Desktop\input.txt'
try:
os.remove(filename)
except OSError:
pass
f1 = open(filename, 'a')
…of je kunt dat allemaal vervangen door…
f1 = open(os.path.expanduser('~') + '\Desktop\input.txt', 'w')
…waardoor het bestand wordt afgekapt tot de lengte nul voordat het wordt geopend.
Antwoord 2, autoriteit 8%
Je probeert het bestand te verwijderen terwijl het open is, je hebt die with
daar niet eens nodig om het te verwijderen:
path = os.path.join(os.path.expanduser('~'), 'Desktop/input.txt')
with open(path, 'w'): as f:
# do stuff
Verwijdert als het bestaat
Antwoord 3, autoriteit 5%
Je kunt open met mode parameter = ‘w’ gebruiken. Als de modus wordt weggelaten, wordt deze standaard ingesteld op ‘r’.
with open(os.path.expanduser('~') + '\Desktop\input.txt', 'w')
wBestand inkorten tot een lengte van nul of een tekstbestand maken om te schrijven.
De stream staat aan het begin van het bestand.
Antwoord 4, autoriteit 3%
Windows staat niet toe dat je een geopend bestand verwijdert (tenzij het is geopend met ongebruikelijke opties voor delen). Je moet het sluiten voordat je het verwijdert:
try:
with open(os.path.expanduser('~') + '\Desktop\input.txt') as existing_file:
existing_file.close()
os.remove(os.path.expanduser('~') + '\Desktop\input.txt')
Antwoord 5, autoriteit 3%
Probeer dit:
from os import path,
PATH = os.path.expanduser('~') + '\Desktop\input.txt'
if path.isfile(PATH):
try:
os.remove(os.path.expanduser('~') + '\Desktop\input.txt')
except OSError:
pass
bewerkt:
from os import path,
PATH = os.path.expanduser('~') + '\Desktop\input.txt'
try:
os.remove(os.path.expanduser('~') + '\Desktop\input.txt')
except OSError:
pass