19  OS module

import os

19.1 File system

19.1.2 Files

19.1.2.1 List files

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

19.1.2.2 Rename

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

19.1.2.3 File Stats

os.stat("f1.txt")
os.stat_result(st_mode=33188, st_ino=2332655, st_dev=16777221, st_nlink=1, st_uid=501, st_gid=20, st_size=11, st_atime=1707292670, st_mtime=1707291869, st_ctime=1707294919)

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

19.1.3 Make folders

19.1.3.1 One-level folder

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

19.1.3.2 Multi-level folders

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

19.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'] 

19.2 Environment var

print(os.environ.get('PATH'))
/Users/kittipos/.pyenv/shims:/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:/usr/local/go/bin:/Applications/quarto/bin:/usr/local/opt/ruby/bin:/Users/kittipos/.pyenv/shims:/Users/kittipos/.gem/bin:/Users/kittipos/development/flutter/bin:/Users/kittipos/.rvm/bin:/Users/kittipos/Applications/quarto/bin:/Library/TeX/texbin:/usr/texbin:/Applications/RStudio.app/Contents/Resources/app/bin/postback

19.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