```python import os ``` ## Basic Operations - os.getcwd() - os.listdir() - os.makedirs() ```python print("Current Directory: ", os.getcwd()) print(type(os.getcwd())) ``` Current Directory: C:\Users\Brian\Python\Learning Notes\Practices\OS <class 'str'> ```python print("List all things in Current Diectory: ", os.listdir()) print(type(os.listdir())) ``` List all things in Current Diectory: ['.ipynb_checkpoints', 'os_files.ipynb', 'Untitled.ipynb'] <class 'list'> ```python # can only execute once. Will throw FileExistsError if execute over once. os.makedirs("project") ``` ```python # pass in the argument to ignore the FileExistsError os.makedirs("project", exist_ok=True) ``` ```python print(os.path.exists("project")) ``` True ## os.path ```python # create a demo text file first os.makedirs("project", exist_ok=True) with open("project/test.txt", "w") as f: f.write("testing") ``` ```python print(os.path.isfile("project/test.txt")) # True ``` True ```python print(os.path.exists("project/test.txt")) # True ``` True ```python print(os.path.isdir("project/test.txt")) # False ``` False ```python os.makedirs("project/test", exist_ok=True) print(os.path.isdir("project/test")) # True ``` True ## Other useful methods ```python # get the file name without the path os.path.basename("project/test.txt") ``` 'test.txt' ```python # get the name of the directory os.path.dirname("project/test.txt") ``` 'project' ```python # or just split the path name into two different variables dir_name, filename = os.path.split("project/test.txt") print(dir_name) print(filename) ``` project test.txt ```python path = os.path.join(dir_name, filename) print(path) ``` project\test.txt ## Implement a file copy function ```python import os import shutil def copy(path): # get directory name and base filename dir_name, filename = os.path.split(path) # create a new filename new_name = "copied_" + filename # concatenate a new filename with path new_path = os.path.join(dir_name, new_name) # copy file shutil.copy2(path, new_path) return os.path.isfile(new_path), new_path ``` ```python # test functionality is_copied, filepath = copy("project/test.txt") if is_copied: print(f"Successfully Copied to path: {filepath}") else: print("Copy Failed") ``` ``` Successfully Copied to path: project\copied_test.txt ``` ```python # copy using file i/o def copy_file(path): dir_name, filename = os.path.split(path) new_name = "new_" + filename new_path = os.path.join(dir_name, new_name) with open(path, "r") as f: content = f.readlines() with open(new_path, "w") as f: f.writelines(content) return os.path.isfile(new_path), new_path is_copied, filepath = copy_file("project/test.txt") if is_copied: print(f"Successfully Copied to path: {filepath}") else: print("Copy Failed") ```