agentpy icon indicating copy to clipboard operation
agentpy copied to clipboard

FileExistsError when saving data to existing directory outside current path

Open gfbarbieri opened this issue 2 years ago • 0 comments

I've encountered an issue with the save() method in the DataDict class, where it fails to properly handle saving data to a directory outside the current working directory. The result is FileExistsError because the folder data already exists one level above the program file location. Here is the code that caused the error:

results.save(exp_name='firm_dynamics', path=os.path.join('..','data'))

Looking into the .save() method, I believe the problematic code snippet is as follows:

# Create output directory if it doesn't exist
if path not in os.listdir():
    os.makedirs(path)

This logic checks if the path is in the current directory's listing (os.listdir()), leading to a FileExistsError when attempting to save data to an existing directory located outside the current directory, e.g., path='../'. A potential solution would be to directly check for the existence of the specified path and create it if it does not exist, avoiding the assumption that path should be within the current directory's listing:

if not os.path.exists(path):
    os.makedirs(path)

gfbarbieri avatar Feb 10 '24 17:02 gfbarbieri