How to delete a file or folder?

前端 未结 13 1108
青春惊慌失措
青春惊慌失措 2020-11-22 12:29

How do I delete a file or folder in Python?

相关标签:
13条回答
  • 2020-11-22 12:57

    Python syntax to delete a file

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

    Or

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

    Or

    pathlib Library for Python version >= 3.4

    file_to_rem = pathlib.Path("/tmp/<file_name>.txt")
    file_to_rem.unlink()
    

    Path.unlink(missing_ok=False)

    Unlink method used to remove the file or the symbolik link.

    If missing_ok is false (the default), FileNotFoundError is raised if the path does not exist.
    If missing_ok is true, FileNotFoundError exceptions will be ignored (same behavior as the POSIX rm -f command).
    Changed in version 3.8: The missing_ok parameter was added.

    Best practice

    1. First, check whether the file or folder exists or not then only delete that file. This can be achieved in two ways :
      a. os.path.isfile("/path/to/file")
      b. Use exception handling.

    EXAMPLE for 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)
    

    ###Exception Handling

    #!/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))
    

    ###RESPECTIVE OUTPUT

    Enter file name to delete : demo.txt
    Error: demo.txt - No such file or directory.
    
    Enter file name to delete : rrr.txt
    Error: rrr.txt - Operation not permitted.
    
    Enter file name to delete : foo.txt
    

    ###Python syntax to delete a folder

    shutil.rmtree()
    

    Example for 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))
    
    0 讨论(0)
  • 2020-11-22 13:02
    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)
    
    0 讨论(0)
  • 2020-11-22 13:04

    Here is a robust function that uses both os.remove and shutil.rmtree:

    def remove(path):
        """ param <path> could either be relative or absolute. """
        if os.path.isfile(path) or os.path.islink(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))
    
    0 讨论(0)
  • 2020-11-22 13:04

    To remove all files in folder

    import os
    import glob
    
    files = glob.glob(os.path.join('path/to/folder/*'))
    files = glob.glob(os.path.join('path/to/folder/*.csv')) // It will give all csv files in folder
    for file in files:
        os.remove(file)
    

    To remove all folders in a directory

    from shutil import rmtree
    import os
    
    // os.path.join()  # current working directory.
    
    for dirct in os.listdir(os.path.join('path/to/folder')):
        rmtree(os.path.join('path/to/folder',dirct))
    
    0 讨论(0)
  • 2020-11-22 13:06

    shutil.rmtree is the asynchronous function, so if you want to check when it complete, you can use while...loop

    import os
    import shutil
    
    shutil.rmtree(path)
    
    while os.path.exists(path):
      pass
    
    print('done')
    
    0 讨论(0)
  • 2020-11-22 13:08
    • os.remove() removes a file.

    • os.rmdir() removes an empty directory.

    • shutil.rmtree() deletes a directory and all its contents.


    Path objects from the Python 3.4+ pathlib module also expose these instance methods:

    • pathlib.Path.unlink() removes a file or symbolic link.

    • pathlib.Path.rmdir() removes an empty directory.

    0 讨论(0)
提交回复
热议问题