daniel8x
daniel8x

Reputation: 1080

No such file or directory when creating file in Python

I am implementing a logging process which append to the log file. I want to check, if the log file exist then append to more lines to the file. If not then create the new file then append but i keep getting error saying: No such file or directory

        try:
            f = open(os.path.join(
                BASE_DIR, '/app/logs/log-' + current_date + '.csv'), "a+")
            f.write(message + "\n")
        except IOError:
            f = open(os.path.join(
                BASE_DIR, '/app/logs/log-' + current_date + '.csv'), "w+")
            f.write(message + "\n")
        finally:
            f.close()

What mistake am i making here?

============ Update

This code is working :

        try
            f = open('log-' + current_date + '.csv'), "a+")
            f.write(message + "\n")
        except IOError:
            f = open('log-' + current_date + '.csv'), "w+")
            f.write(message + "\n")
        finally:
            f.close()

if i open the file like this, its working. But as soon as i add the path there. Its just keep saying no file or directory.

=============== Update

Never mind, it has been working.I forgot to rebuild my docker image to see the results. :DD. So the problem is the incorrect path.

Upvotes: 0

Views: 3531

Answers (2)

Matt
Matt

Reputation: 2802

The output of os.path.join will be /app/logs/log-<current_date>.csv. This is not what you want. Remove the leading / from that second argument and it will work as you want. This happens because you passed it an absolute path as the second input. See os.path.join documentation for an explanation.

Upvotes: 2

Jonas
Jonas

Reputation: 1529

Why not do something like this:

import os

check = os.path.isfile("file.txt")

with open("file.txt", "a+") as f:
    if not check:
        f.write("oi")
    else:
        f.write("oi again")

Upvotes: 0

Related Questions