42  OS module

import os

42.1 File system

42.1.2 Files

42.1.2.1 List files

os.listdir()
['fold2', 'f1.txt']

42.1.2.2 Rename

os.rename("f1.txt", "f2.txt")
os.listdir()
['fold2', 'f2.txt']
os.rename("f2.txt", "f1.txt") # Clean-up

42.1.2.3 File Stats

os.stat("f1.txt")
os.stat_result(st_mode=33188, st_ino=5343176, st_dev=16777233, st_nlink=1, st_uid=501, st_gid=20, st_size=11, st_atime=1745973546, st_mtime=1711717319, st_ctime=1746977428)

Size

mod_time1 = os.stat("f1.txt").st_size 
mod_time1
11

Modification Time

from datetime import datetime
print(datetime.fromtimestamp(mod_time1))
1970-01-01 07:00:11

42.1.3 Make folders

42.1.3.1 One-level folder

os.mkdir("fold-d") # Make
os.rmdir("fold-d") # Remove

42.1.3.2 Multi-level folders

os.makedirs("fold-d2/fold-dd2") # Make
os.removedirs("fold-d2/fold-dd2") # Remove

42.1.4 Walk

os.walk() return tuples with 3 elements

for dirpath, dirnames, filenames in os.walk("."):
    print("Current path: ", dirpath)
    print("Directory: ", dirnames)
    print("Files: ", filenames, "\n")
Current path:  .
Directory:  ['fold2']
Files:  ['f1.txt'] 

Current path:  ./fold2
Directory:  []
Files:  ['f2.txt'] 

42.2 Environment var

print(os.environ.get('PATH'))
/Users/kittipos/development/flutter/bin:/Users/kittipos/miniforge3/envs/ds-env/bin:/Users/kittipos/miniforge3/condabin:/usr/local/texlive/2024/bin/universal-darwin:/Users/kittipos/Library/Application Support/reflex/bun/bin:/Users/kittipos/.juliaup/bin:/Users/kittipos/.rubies/ruby-3.3.0/bin:/Library/Frameworks/Python.framework/Versions/3.12/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Library/TeX/texbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/go/bin:/Applications/quarto/bin:/Users/kittipos/development/flutter/bin:/Users/kittipos/.local/bin:/Users/kittipos/.local/bin:/usr/local/texlive/2024/bin/universal-darwin:/Users/kittipos/Library/Application Support/reflex/bun/bin:/Users/kittipos/.juliaup/bin:/Users/kittipos/.rubies/ruby-3.3.0/bin:/Users/kittipos/development/flutter/bin:/Users/kittipos/miniforge3/bin:/Users/kittipos/miniforge3/condabin:/usr/local/texlive/2024/bin/universal-darwin:/Users/kittipos/Library/Application Support/reflex/bun/bin:/Users/kittipos/.juliaup/bin:/Users/kittipos/.rubies/ruby-3.3.0/bin:/Library/Frameworks/Python.framework/Versions/3.12/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Library/TeX/texbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/go/bin:/Applications/quarto/bin:/Users/kittipos/development/flutter/bin:/Users/kittipos/.local/bin:/Users/kittipos/.local/bin:/Library/Frameworks/Python.framework/Versions/3.12/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Library/TeX/texbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/go/bin:/Applications/quarto/bin:/Users/kittipos/development/flutter/bin:/Users/kittipos/miniforge3/envs/ds-env/bin:/Users/kittipos/miniforge3/condabin:/usr/local/texlive/2024/bin/universal-darwin:/Users/kittipos/Library/Application Support/reflex/bun/bin:/Users/kittipos/.juliaup/bin:/Users/kittipos/.rubies/ruby-3.3.0/bin:/Library/Frameworks/Python.framework/Versions/3.12/bin:/Users/kittipos/.local/bin:/Users/kittipos/miniforge3/bin:/Users/kittipos/.local/bin:/Users/kittipos/.local/bin

42.3 Os Path

Join

os.path.join("d", "f1.txt")
'd/f1.txt'

Base

os.path.basename("/tmp/f1.txt")
'f1.txt'
os.path.dirname("/tmp/f1.txt")
'/tmp'

Split

os.path.split("/tmp/f1.txt")
('/tmp', 'f1.txt')
os.path.splitext("/tmp/f1.txt")
('/tmp/f1', '.txt')

Exist ?

os.path.exists("/tmp/f1.txt")
False

Is dir, file ?

os.path.isdir("fold2")
True
os.path.isfile("fold2")
False