Python pathlib Cheatsheet

1. Importing
from pathlib import Path
2. Creating Paths
            
                # Current working directory
                p = Path.cwd()
    
                # Home directory
                home = Path.home()
    
                # Relative path
                p = Path("folder/subfolder/file.txt")
    
                # Absolute path
                p = Path("/usr/local/bin")
    
                # Convert to string
                str_path = str(p)
            
        
3. Path Components
            
                p = Path("/home/max/docs/report.pdf")
                p.name       # "report.pdf"
                p.stem       # "report"
                p.suffix     # ".pdf"
                p.suffixes   # [".tar", ".gz"]
                p.parent     # "/home/max/docs"
                p.parents[0] # "/home/max/docs"
                p.parents[1] # "/home/max"
            
        
4. Path Operations
            
                # Joining paths
                p = Path("/home/max") / "docs" / "report.pdf"
    
                # Replace filename or extension
                p.with_name("new_file.txt")
                p.with_suffix(".md")
            
        
5. File / Directory Checks
            
                p.exists()     # True/False
                p.is_file()    # True if file
                p.is_dir()     # True if directory
                p.is_symlink() # True if symlink
            
        
6. File System Operations
            
                # Read / write text
                p.write_text("Hello World")
                content = p.read_text()

                # Read / write bytes
                p.write_bytes(b"binary data")
                data = p.read_bytes()

                # Make directories
                Path("new/folder").mkdir(parents=True, exist_ok=True)

                # Remove file
                p.unlink()

                # Rename / move
                p.rename("new_name.txt")
                p.replace("some/other/location.txt")
            
        
7. Glob Patterns
            
                # Match all .txt files
                for file in Path("docs").glob("*.txt"):
                    print(file)

                # Recursive glob
                for file in Path("docs").rglob("*.txt"):
                    print(file)
            
        
8. Resolve & Absolute Paths
            
                p = Path("docs/../report.pdf")
            p.resolve()  # Absolute normalized path
            
        
# This tag will be opened by default.
9. (Important!!).... ** Path.iterdir() **
            
                # Basic Iteration & Print Results
                p = Path("docs")
                for item in p.iterdir():
                    print(item)
                    
                # Filter files only
                for f in Path(".").iterdir():
                if f.is_file():
                print(f)
                
                # Filter directories only
                for d in Path(".").iterdir():
                if d.is_dir():
                print(d)
                
                # Sorted
                for entry in sorted(Path(".").iterdir()):
                print(entry.name)
                
                # Filter by extension
                for f in Path(".").iterdir():
                if f.suffix == ".txt":
                print(f)

                # List comprehension
                files = [f.name for f in Path(".").iterdir() if f.is_file()]
            
        
10. Quick Comparison
Method Scope Example
iterdir() Direct children only Path(".").iterdir()
glob("*.py") Pattern-matching, 1 level deep Path(".").glob("*.py")
rglob("*.py") Recursive search Path(".").rglob("*.py")
# This tag will be opened by default.
Pathlib Methods - Arguments Explained
Method Arguments Default Explanation
mkdir() mode, parents, exist_ok 0o777, False, False Create a directory. parents=True creates parent directories. exist_ok=True ignores if directory exists.
rmdir() - - Remove empty directory. Raises OSError if not empty.
unlink() missing_ok False Delete a file. missing_ok=True ignores if file missing.
rename() target - Rename or move file. Overwrites not allowed if exists.
replace() target - Rename or move file. Overwrites if target exists.
touch() mode, exist_ok 0o666, True Create empty file. exist_ok=True ignores if file exists.
open() mode, encoding "r", None Open file handle like open().
read_text() encoding, errors None, None Read file as string.
write_text() data, encoding, errors - Write string to file.
glob() pattern - Pattern match files in directory.
rglob() pattern - Recursive pattern match files.
iterdir() - - Iterate over directory entries (direct children only).