# Read file from current path in Python

I had to write a custom function to load a yaml file from the current working directory. The function itself works and my intention was to write it in a pure fashion but my senior colleague told me that the way I wrote this function is utterly bad and I have to rewrite it.

Which commandment in Python did I violate? Can anyone tell me what I did wrong here and how a "professional" solution would look like?

from typing import Dict
import yaml
from pathlib import Path
import os

"""[reads a yaml file from current working directory]
Parameters
----------
file : str
[.yaml or .yml file]
Returns
-------
Dict
[Dictionary]
"""
path = os.path.join(Path.cwd().resolve(), file)
if os.path.isfile(path):
with open(path) as f:
return content
else:
return None

print(content)


Which commandment did you violate? Using os.path and pathlib in the same breath! pathlib is an object-oriented replacement to os.path.

    path = os.path.join(Path.cwd().resolve(), file)
if os.path.isfile(path):
with open(path) as f:


could be written as:

    path = Path.cwd().joinpath(file)
if path.is_file():
with path.open() as f:


or since you're starting at the current directory, simply:

    path = Path(file)
if path.is_file():
with path.open() as f:

• I am using ruamel yaml in my own project, so I might be missremembering the details. I thought one could simply do content = yaml.load(path, Loader=SafeLoader) directly on the path without having to explicitly open it? Dec 2, 2021 at 19:00
• @N3buchadnezzar That may be true; I haven't used yaml at all. My answer focused on the mashup between os.path and pathlib, stopping just before the yaml.load(...) line for that very reason. Dec 2, 2021 at 19:05
• thank you, very helpful! Dec 2, 2021 at 19:06