Question

How to print a string or write something into a file from Python in Django app

Posted July 14, 2021 173 views
NginxPythonDjangoLoggingUbuntu 18.04

I was trying to log some string to troubleshoot my app. The issue exist only in the server, not in local development server.

My app is running nginx and gunicorn, I have no clue how to use python print() function and where the output will be. Also I tried to write a file, but that also didn’t work. I don’t know why the file was not written in target directory.

I used this code to output a file:
with open("./debug.txt") as file_object:
file_object.write("ip: " + client_host)

Any help will be appreciated.
Thanks

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
Submit an Answer
1 answer

Hello,

You could use something like this:

from django.core.files import File

f = open('./debug.txt', 'w')
testfile = File(f)
testfile.write("ip: " + client_host)
testfile.close
f.close

You could then run the following command to find the file:

find -name debug.txt

Let me know how it goes!
Regards,
Bobby

  • Hello,

    Thanks for your reply Bobby. It worked. However the file was generated at home directory of the app. But it solved my problem.

    If possible, can you tell me what was wrong with my code. Why it didn’t generate any file? However the same code worked in normal python app in my Digitalocean Ubunt OS. It will be much appreciated.
    Thank you!

    • Hello,

      I think that the problem was that you did not specify the mode with the open function:

      Since the mode is omitted, the file is opened in ‘read’ mode, which only opens the file for reading.

      With the snippet that I’ve shared, we’ve specified the w mode which stands for writing as you wanted to write to that file.

      Possible modes are:

      # reading mode
      f = open("./file.txt", mode='r')
      
      # writing mode 
      f = open("./file.txt", mode = 'w')
      
      # appending mode / writing to the end of the file
      f = open("./file.txt", mode = 'a')
      

      Regards,
      Bobby