Cara menghapus file atau folder di Python?
os.hapus()
menghapus file.
os.rmdir()
menghapus direktori kosong.
shutil.rmtree()
menghapus direktori dan semua isinya.
Path
benda-benda dari Python 3.4+ pathlib
modul juga mengekspos ini contoh metode:
pathlib.Jalan.unlink()
menghapus file atau link simbolik.
pathlib.Jalan.rmdir()
menghapus direktori kosong.
import os
os.remove("/tmp/<File_name>.txt")
Atau
import os
os.unlink("/tmp/<File_name>.txt")
os.jalan.isfile("/path/ke/file")
exception handling.
CONTOH untuk os.jalan.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))
Masukkan nama file yang akan dihapus : demo.txt Kesalahan: demo.txt - Tidak ada berkas atau direktori.Masukkan nama file yang akan dihapus : rrr.txt Kesalahan: rrr.txt - Operasi tidak diizinkan.
Masukkan nama file yang akan dihapus : foo.txt
shutil.rmtree()
Contoh untuk 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))
Gunakan
shutil.rmtree(path[, ignore_errors[, onerror]])
(Lihat dokumentasi lengkap di shutil) dan/atau
os.remove
dan
os.rmdir
(Dokumentasi lengkap di os.)
Membuat fungsi untuk kalian.
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))
Anda dapat menggunakan built-in pathlib
modul (memerlukan Python 3.4+, tetapi ada backports untuk versi yang lebih tua di PyPI: pathlib
, pathlib2
).
Untuk menghapus sebuah file yang ada unlink
metode:
import pathlib
path = pathlib.Path(name_of_file)
path.unlink()
Atau rmdir
metode untuk menghapus kosong folder:
import pathlib
path = pathlib.Path(name_of_folder)
path.rmdir()
Bagaimana cara menghapus file atau folder di Python?
Untuk Python 3, menghapus file dan direktori secara individual, gunakan unlink
dan rmdir
Path
objek metode masing-masing:
from pathlib import Path
dir_path = Path.home() / 'directory'
file_path = dir_path / 'file'
file_path.unlink() # remove file
dir_path.rmdir() # remove directory
Catatan bahwa anda juga dapat menggunakan path relatif dengan Path
benda-benda, dan anda dapat memeriksa direktori kerja anda saat ini dengan Path.cwd
.
Untuk menghapus setiap file dan direktori di Python 2, lihat bagian jadi label di bawah ini.
Untuk menghapus direktori dengan isi, gunakan shutil.rmtree
, dan perhatikan bahwa ini adalah tersedia dalam Python 2 dan 3:
from shutil import rmtree
rmtree(dir_path)
Baru di Python 3.4 adalah Path
objek.
Let's digunakan untuk membuat direktori dan file untuk menunjukkan penggunaan. Perhatikan bahwa kita menggunakan /
untuk bergabung dengan bagian-bagian dari jalan, ini bekerja di sekitar masalah antara sistem operasi dan isu-isu dari menggunakan garis miring terbalik di Windows (di mana anda'd perlu double up anda garis miring terbalik seperti \\
atau menggunakan baku string, seperti r"foo\bar"
):
from pathlib import Path
# .home() is new in 3.5, otherwise use os.path.expanduser('~')
directory_path = Path.home() / 'directory'
directory_path.mkdir()
file_path = directory_path / 'file'
file_path.touch()
dan sekarang:
>>> file_path.is_file()
True
Sekarang mari's menghapusnya. Pertama file:
>>> file_path.unlink() # remove file
>>> file_path.is_file()
False
>>> file_path.exists()
False
Kita dapat menggunakan globbing untuk menghapus beberapa file - first let's membuat beberapa file untuk ini:
>>> (directory_path / 'foo.my').touch()
>>> (directory_path / 'bar.my').touch()
Kemudian hanya iterate atas glob pola:
>>> for each_file_path in directory_path.glob('*.my'):
... print(f'removing {each_file_path}')
... each_file_path.unlink()
...
removing ~/directory/foo.my
removing ~/directory/bar.my
Sekarang, menunjukkan menghapus direktori:
>>> directory_path.rmdir() # remove directory
>>> directory_path.is_dir()
False
>>> directory_path.exists()
False
Bagaimana jika kita ingin menghapus direktori dan segala sesuatu di dalamnya?
Untuk penggunaan ini-kasus, menggunakan shutil.rmtree
Let's menciptakan kami direktori dan file:
file_path.parent.mkdir()
file_path.touch()
dan perhatikan bahwa rmdir
gagal kecuali's kosong, yang mengapa rmtree begitu nyaman:
>>> directory_path.rmdir()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "~/anaconda3/lib/python3.6/pathlib.py", line 1270, in rmdir
self._accessor.rmdir(self)
File "~/anaconda3/lib/python3.6/pathlib.py", line 387, in wrapped
return strfunc(str(pathobj), *args)
OSError: [Errno 39] Directory not empty: '/home/excelsiora/directory'
Sekarang, impor rmtree dan lulus direktori ke funtion:
from shutil import rmtree
rmtree(directory_path) # remove everything
dan kita bisa melihat seluruh hal yang telah dihapus:
>>> directory_path.exists()
False
Jika anda're pada Python versi 2, ada's backport dari pathlib modul yang disebut pathlib2, yang dapat diinstal dengan pip:
$ pip install pathlib2
Dan kemudian anda dapat alias perpustakaan untuk pathlib
import pathlib2 as pathlib
Atau hanya langsung mengimpor Path
objek (seperti yang ditunjukkan di sini):
from pathlib2 import Path
Jika itu's terlalu banyak, anda dapat menghapus file dengan os.menghapus
atau os.unlink
from os import unlink, remove
from os.path import join, expanduser
remove(join(expanduser('~'), 'directory/file'))
atau
unlink(join(expanduser('~'), 'directory/file'))
dan anda dapat menghapus direktori dengan os.rmdir
:
from os import rmdir
rmdir(join(expanduser('~'), 'directory'))
Perhatikan bahwa ada juga os.removedirs
- ini hanya menghapus direktori kosong secara rekursif, tapi itu mungkin cocok untuk anda gunakan-hal.
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)
os.unlink(path, *, dir_fd=None)
atau
os.remove(path, *, dir_fd=None)
Kedua fungsi semantik yang sama. Ini fungsi menghilangkan (menghapus) file path. Jika jalan tidak file dan direktori, maka pengecualian dinaikkan.
shutil.rmtree(path, ignore_errors=False, onerror=None)
atau
os.rmdir(path, *, dir_fd=None)
Dalam rangka untuk menghapus seluruh direktori pohon, shutil.rmtree()
dapat digunakan. os.rmdir
hanya bekerja ketika direktori kosong dan ada.
os.removedirs(name)
Menghapus setiap kosong direktori induk dengan diri sampai orang tua yang memiliki beberapa konten
ex. os.removedirs('abc/xyz/pqr') akan menghapus direktori dengan perintah 'abc/xyz/pqr', 'abc/xyz' dan 'abc' jika mereka kosong.
Untuk info lebih lanjut cek resmi doc: os.unlink
, os.hapus
, os.rmdir
, shutil.rmtree
, os.removedirs
Saya sarankan menggunakan subproses
jika tulisan yang indah dan kode yang dapat dibaca adalah secangkir teh:
import subprocess
subprocess.Popen("rm -r my_dir", shell=True)
Dan jika anda bukan seorang insinyur perangkat lunak, maka mungkin mempertimbangkan menggunakan Jupyter; anda dapat cukup ketik perintah bash:
!rm -r my_dir
Secara tradisional, anda menggunakan shutil
:
import shutil
shutil.rmtree(my_dir)