Skip to content

Instantly share code, notes, and snippets.

@JosephTLyons
Last active April 10, 2023 06:21
Show Gist options
  • Save JosephTLyons/e11bab9b7a1f19a02ef14de58d1419a1 to your computer and use it in GitHub Desktop.
Save JosephTLyons/e11bab9b7a1f19a02ef14de58d1419a1 to your computer and use it in GitHub Desktop.
Pretend filesystem in Python
class File:
def __init__(self, name, contents=""):
self.name = name
self.content = contents
class Directory:
def __init__(self, name, items):
self.name = name
self.items = items
def print_items(self):
print(self.name)
Directory.__print_items_internal(self)
@staticmethod
def __print_items_internal(directory, indentation="| "):
for item in directory.items:
print(f"{indentation}{item.name}")
if isinstance(item, Directory):
Directory.__print_items_internal(item, indentation + "| ")
def main():
Directory(
"/",
[
Directory(
"animals",
[
File("bird.txt"),
File("cat.txt"),
File("dog.txt"),
Directory(
"people",
[
File("bob.txt"),
File("joe.txt"),
File("sam.txt"),
File("seth.txt"),
],
),
File("zebra.txt"),
],
),
Directory(
"misc",
[
Directory(
"a",
[
Directory(
"b",
[
Directory(
"c",
[
Directory(
"d",
[
Directory(
"e",
[
File("hidden.txt"),
],
)
],
)
],
)
],
)
],
)
],
),
],
).print_items()
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment