web-dev-qa-db-ja.com

ファイルが存在する場合は削除します。 python

ファイルを作成したい。すでに存在する場合は、削除して新規作成します。このようにしてみましたが、Win32エラーがスローされます。何が悪いのですか?

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')
13
Yui

開いているファイルと 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')

...ファイルを開く前に長さをゼロに切り詰めます。

28
Aya

開いているファイルを削除しようとしています。削除するためにwithは必要ありません。

path = os.path.join(os.path.expanduser('~'), 'Desktop/input.txt')
with open(path, 'w'): as f:
    # do stuff

存在する場合は削除します

3
jamylak

モードパラメータ= 'w'でopenを使用できます。モードを省略すると、デフォルトで「r」になります。

with open(os.path.expanduser('~') + '\Desktop\input.txt', 'w')

wファイルをゼロ長に切り捨てるか、書き込み用のテキストファイルを作成します。ストリームはファイルの先頭に配置されます。

2
ndpu

Windowsでは、開いているファイルを削除できません(通常とは異なる共有オプションで開いている場合を除く)。削除する前に閉じる必要があります。

try:
    with open(os.path.expanduser('~') + '\Desktop\input.txt') as existing_file:
        existing_file.close()
        os.remove(os.path.expanduser('~') + '\Desktop\input.txt')
1
RichieHindle

これを試して:

 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
1
Maryam Arshi