Pythonでファイルやフォルダを削除する方法
os.remove()
ファイルを削除します。
os.rmdir()
空のディレクトリを削除します。
shutil.rmtree()
はディレクトリとそのすべての内容を削除します。
pathlib.Path.unlink()
ファイルまたはシンボリックリンクを削除します。
pathlib.Path.rmdir()
は空のディレクトリを削除します。
import os
os.remove("/tmp/<file_name>.txt")
または
import os
os.unlink("/tmp/<file_name>.txt")
os.path.isfile("/path/to/file")
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
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))
os.unlink(path, *, dir_fd=None)
または
os.remove(path, *, dir_fd=None)
ファイルパスを削除(削除)します。 pathがディレクトリの場合、 OSError
が発生します。
Python 2では、パスが存在しない場合、[Errno 2]付きのOSError
(ENOENT
)が発生します。 Python 3では、[Errno 2]付きのFileNotFoundError
(ENOENT
)が発生します。 Python 3では、FileNotFoundError
はOSError
のサブクラスなので、後者を捉えると前者が捉えられます。
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'が空の場合はそれらを削除します。
あなたのために関数を作りましょう。
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))
shutil.rmtreeは非同期関数なので、完了時に確認したい場合はwhile ... loopを使用できます。
import os
import shutil
shutil.rmtree(path)
while os.path.exists(path):
pass
print('done')
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)
美しく、読みやすいコードを書くことがあなたのお茶のカップであるならば、私はsubprocess
を使うことを勧めます:
import subprocess
subprocess.Popen("rm -r my_dir", Shell=True)
もしあなたがソフトウェアエンジニアでなければ、Jupyterを使うことを検討してください。単純にbashコマンドを入力することができます。
!rm -r my_dir
伝統的に、あなたはshutil
を使います:
import shutil
shutil.rmtree(my_dir)