Python Testing with pytest, Second Edition: File not Found Error (page 43)

I ran this command after installing the sample application:

$ cards add do something --owner Brian

And got a file not found error:

FileNotFoundError: [Errno 2] No such file or directory: ‘/Users/tslcw/cards_db/.cards_db.json’

perhaps this is because I am using a folder in drop box as my work directory? Also, it would be nice to have an option to create the cards db in the cards_proj folder or the cards directory in the venv directory.

This problem can be fixed by modifying the init method in db.py so that tiny.db creates directories:

def init(self, db_path, db_file_prefix):
self._db = tinydb.TinyDB(db_path / f"{db_file_prefix}.json", create_dirs=True)

It is dunder init, but the forum software seems to be removing the dunders.

Interesting problem.
I’ll try dropbox location, although that shouldn’t make much difference.

What OS and shell are you using?

I am using Mac OS Big Sur and bash v 5. Switching to a local dir made no difference. But see my reply—adding “create_dirs=True” to statement in init method in db.py fixed my issue.

Nice. I’ll modify the code for the next update.

I had the same issue using Linux(PopOS).

Workaround that worked for me was to just manually create the cards_db directory and then a hidden file named name .cards_db.json inside of that cards_db directory.

/home/user/cards_db/.cards_db.json

that works too. :+1:

I preferred this solution instead creating folder manually.

  • Change code as you suggested

  • Reinstalled cards

Its working now :slightly_smiling_face: