web-dev-qa-db-ja.com

ファイルまたはフォルダを削除する

Pythonでファイルやフォルダを削除する方法

1700
Zygimantas

os.remove() ファイルを削除します。

os.rmdir() 空のディレクトリを削除します。

shutil.rmtree() はディレクトリとそのすべての内容を削除します。

pathlib.Path.unlink() ファイルまたはシンボリックリンクを削除します。

pathlib.Path.rmdir() は空のディレクトリを削除します。

2746
RichieHindle

ファイルを削除するためのPython構文

import os
os.remove("/tmp/<file_name>.txt")

または

import os
os.unlink("/tmp/<file_name>.txt")

ベストプラクティス

  1. まず、ファイルまたはフォルダが存在するかどうかを確認してから、そのファイルのみを削除します。これは2つの方法で実現できます。
    a。 os.path.isfile("/path/to/file")
    b。 exception handling.を使う

_ example _ os.path.isfileの場合

#!/usr/bin/python
import os
myfile="/tmp/foo.txt"

## If file exists, delete it ##
if os.path.isfile(myfile):
    os.remove(myfile)
else:    ## Show an error ##
    print("Error: %s file not found" % myfile)

例外処理

#!/usr/bin/python
import os

## Get input ##
myfile= raw_input("Enter file name to delete: ")

## Try to delete the file ##
try:
    os.remove(myfile)
except OSError as e:  ## if failed, report it back to the user ##
    print ("Error: %s - %s." % (e.filename, e.strerror))

それぞれの出力

削除するファイル名を入力してください:demo.txt 
エラー:demo.txt  - そのようなファイルまたはディレクトリはありません。 
エラー:rrr.txt  - 操作は許可されていません
 
削除するファイル名を入力してください:foo.txt 

フォルダを削除するためのPython構文

shutil.rmtree()

shutil.rmtree()の例

#!/usr/bin/python
import os
import sys
import shutil

# Get directory name
mydir= raw_input("Enter directory name: ")

## Try to remove tree; if failed show an error using try...except on screen
try:
    shutil.rmtree(mydir)
except OSError as e:
    print ("Error: %s - %s." % (e.filename, e.strerror))
179
anand tripathi

つかいます

shutil.rmtree(path[, ignore_errors[, onerror]])

shutil の完全なドキュメントを参照)および/または

os.remove

そして

os.rmdir

os に関する完全な文書)

67
Mihai Maruseac

ファイルを削除する場合

unlink または remove を使用できます。

os.unlink(path, *, dir_fd=None)

または

os.remove(path, *, dir_fd=None)

ファイルパスを削除(削除)します。 pathがディレクトリの場合、 OSError が発生します。

Python 2では、パスが存在しない場合、[Errno 2]付きのOSErrorENOENT)が発生します。 Python 3では、[Errno 2]付きのFileNotFoundErrorENOENT)が発生します。 Python 3では、FileNotFoundErrorOSErrorのサブクラスなので、後者を捉えると前者が捉えられます。

フォルダを削除する場合

os.rmdir(path, *, dir_fd=None)

rmdir ディレクトリパスを削除(削除)します。ディレクトリが空の場合にのみ機能します。それ以外の場合は OSError が送出されます。ディレクトリツリー全体を削除するには、 shutil.rmtree() を使用できます。

shutil.rmtree(path, ignore_errors=False, onerror=None)

shutil.rmtreeディレクトリツリー全体を削除します。パスはディレクトリを指している必要があります(ただし、ディレクトリへのシンボリックリンクは指していません)。

Ignore_errorsがtrueの場合、削除の失敗に起因するエラーは無視され、falseまたは省略された場合は、onerrorで指定されたハンドラを呼び出すことによって処理され、省略された場合は例外が発生します。

また見なさい:

os.removedirs(name)

os.removedirs(name) ディレクトリを再帰的に削除する。 rmdir()と同じように動作しますが、リーフディレクトリが正常に削除された場合、エラーが発生するまでpathで指定されているすべての親ディレクトリを連続して削除しようとします。 ).

たとえば、os.removedirs( 'foo/bar/baz')は最初にディレクトリ 'foo/bar/baz'を削除し、次に 'foo/bar'と 'foo'が空の場合はそれらを削除します。

55
Somnath Muluk

あなたのために関数を作りましょう。

def remove(path):
    """ param <path> could either be relative or absolute. """
    if os.path.isfile(path):
        os.remove(path)  # remove the file
    Elif os.path.isdir(path):
        shutil.rmtree(path)  # remove dir and all contains
    else:
        raise ValueError("file {} is not a file or dir.".format(path))
28
flycee

組み込みの pathlib モジュールを使うことができます(Python 3.4以降が必要ですが、PyPIの古いバージョンのためのバックポートがあります: pathlibpathlib2 )。

ファイルを削除するには unlink メソッドがあります。

import pathlib
path = pathlib.Path(name_of_file)
path.unlink()

または rmdir メソッドを使用してemptyフォルダを削除することもできます。

import pathlib
path = pathlib.Path(name_of_folder)
path.rmdir()
24
MSeifert

shutil.rmtreeは非同期関数なので、完了時に確認したい場合はwhile ... loopを使用できます。

import os
import shutil

shutil.rmtree(path)

while os.path.exists(path):
  pass

print('done')
4
m0z4rt
import os

folder = '/Path/to/yourDir/'
fileList = os.listdir(folder)

for f in fileList:
    filePath = folder + '/'+f

    if os.path.isfile(filePath):
        os.remove(filePath)

    Elif os.path.isdir(filePath):
        newFileList = os.listdir(filePath)
        for f1 in newFileList:
            insideFilePath = filePath + '/' + f1

            if os.path.isfile(insideFilePath):
                os.remove(insideFilePath)
2
Lalithesh

美しく、読みやすいコードを書くことがあなたのお茶のカップであるならば、私はsubprocessを使うことを勧めます:

import subprocess
subprocess.Popen("rm -r my_dir", Shell=True)

もしあなたがソフトウェアエンジニアでなければ、Jupyterを使うことを検討してください。単純にbashコマンドを入力することができます。

!rm -r my_dir

伝統的に、あなたはshutilを使います:

import shutil
shutil.rmtree(my_dir) 
0
Miladiouss