удаление файла, если он существует; python
Я хочу создать файл, если он уже существует, я хочу его удалить и создать его заново. Я попытался сделать это так, но он выдает ошибку Win32. Что я делаю не так?
try:
with open(os.path.expanduser('~') + 'Desktopinput.txt'):
os.remove(os.path.expanduser('~') + 'Desktopinput.txt')
f1 = open(os.path.expanduser('~') + 'Desktopinput.txt', 'a')
except IOError:
f1 = open(os.path.expanduser('~') + 'Desktopinput.txt', 'a')
5 ответов
вы пытаетесь удалить открытый файл, и документы для os.remove()
государство...
в Windows при попытке удалить используемый файл возникает исключение
вы можете изменить код на...
filename = os.path.expanduser('~') + '\Desktop\input.txt'
try:
os.remove(filename)
except OSError:
pass
f1 = open(filename, 'a')
...или вы можете заменить все это...
f1 = open(os.path.expanduser('~') + '\Desktop\input.txt', 'w')
...который будет обрезать файл до нулевой длины перед открытием.
вы можете использовать open с параметром mode = 'w'. Если mode опущен, по умолчанию используется значение 'r'.
with open(os.path.expanduser('~') + '\Desktop\input.txt', 'w')
w усечь файл до нулевой длины или создать текстовый файл для записи. Поток располагается в начале файла.
вы пытаетесь удалить файл в то время как он открыт, вам даже не нужно, что with
есть, чтобы удалить его:
path = os.path.join(os.path.expanduser('~'), 'Desktop/input.txt')
with open(path, 'w'): as f:
# do stuff
удаляет, если он существует
Windows не позволит вам удалить открытый файл (если он не открыт с необычными параметрами совместного доступа). Вам нужно будет закрыть его перед удалением:
try:
with open(os.path.expanduser('~') + '\Desktop\input.txt') as existing_file:
existing_file.close()
os.remove(os.path.expanduser('~') + '\Desktop\input.txt')
попробуйте это:
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
редактировать :
from os import path,
PATH = os.path.expanduser('~') + '\Desktop\input.txt'
try:
os.remove(os.path.expanduser('~') + '\Desktop\input.txt')
except OSError:
pass