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.

2 Likes

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.

1 Like

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
1 Like

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:

1 Like