не могу увидеть файл, созданный в Python - PullRequest
0 голосов
/ 02 июня 2018
    def _store_file(self, logVal):
        if not os.path.exists('logs'):
            print("[INFO] creating directory")
            a = os.makedirs("logs")
            print("INFO create Dir result: " + str(a))
         f = None
        try:
            print("{INFO} Trying to open the file for writing logs")
            f = open(self.conf['filename'], 'w')
            print("{INFO} realpath of file is: " + os.path.realpath(f.name))
            print("{INFO} abs path of file is: " + os.path.abspath(f.name))
            res = f.write(str(logVal))
            print("INFO file write: " + str(res))
        except IOError as er:
            print("[INFO]" + str(er))
        finally:
            f.close()
        print("[INFO] WRITTING TO FILE")
        print("sdfjsbdfkjbsdfkjbskjdfbskjfbskjbfkjsdbsdfksds",file=open('logs/temp.txt', 'w'))

Я написал промежуточное программное обеспечение, которое отправляет данные запроса в модуль, который хранит журналы в файле debug.log внутри папки журналов.Код для записи в файл не выдает никаких ошибок, но я не вижу ни папки с именем log, ни файла с именем debug.log.Далее, когда я пытаюсь увидеть полный путь к файлу, он дает

/code/logs/debug.log

Я искал всю мою систему, но не могу найти этот путь

Вывод для вышекод:

web_1  | [EventTracker INFO]: log sent for storage
web_1  | [INFO] present working directory: .  
web_1  | [INFO] creating directory
web_1  | INFO create Dir resutl: None
web_1  | {INFO} Trying to open the file for writing logs
web_1  | {INFO} realpath of file is: /code/debug.log
web_1  | {INFO} abs path of file is: /code/debug.log
web_1  | INFO file write: 432
web_1  | [INFO] WRITTING TO FILE
web_1  | [02/Jun/2018 06:39:16] "GET /community-view/1/ HTTP/1.1" 200 17353
web_1  | [EventTracker.sendRequestData INFO] new data object added to bucket

1 Ответ

0 голосов
/ 02 июня 2018

Глядя на ваш код, я думаю, что вы пытаетесь определить приватный метод для сохранения объекта в файл.

In [   ]: class My_Object(object):
     ...:     conf = {}
     ...: 
     ...:     def __init__(self):
     ...:         self.conf['filename'] = "filename.txt"    
     ...: 
     ...:     def _store_file(self, logVal):
     ...:         if not os.path.exists('logs'):
     ...:             print("[INFO] creating directory")
     ...:             a = os.makedirs("logs")
     ...:             print("INFO create Dir result: " + str(a))
     ...:         f = None
     ...:         try:
     ...:             print("{INFO} Trying to open the file for writing logs")
     ...:             f = open('logs/' + self.conf['filename'], 'w')
     ...:             print("{INFO} realpath of file is: " + os.path.realpath(f.name))
     ...:             print("{INFO} abs path of file is: " + os.path.abspath(f.name))
     ...:             res = f.write(str(logVal))
     ...:             print("INFO file write: " + str(res))
     ...:         except IOError as er:
     ...:             print("[INFO]" + str(er))
     ...:         finally:
     ...:             f.close()
     ...:         print("[INFO] WRITTING TO FILE")
     ...: 

In [145]: Test_Instance = My_Object()

In [146]: Test_Instance._store_file("This is a test")
[INFO] creating directory
INFO create Dir result: None    # because os.makedirs do not return value
{INFO} Trying to open the file for writing logs
{INFO} realpath of file is: xxxxxxx
{INFO} abs path of file is: xxxxxxx
INFO file write: None    # because f.write() returning None object
[INFO] WRITTING TO FILE

Быстрый просмотр содержимого logs/filename.txt:

This is a test

Распечатанное значение показывает None из-за двух вещей.Первое:

f.write(string) записывает содержимое строки в файл, возвращая None.

Второе:

os.makedirs() Этот метод не возвращает никакого значения.

Моя версия исправления кода:

In [   ]: class My_Object(object):
     ...:     conf = {}
     ...: 
     ...:     def __init__(self):
     ...:         self.conf['filename'] = "filename.txt"    
     ...: 
     ...:     def _store_file(self, logVal):
     ...:         save_dir = 'logs'    # use indirection instead
     ...:         if not os.path.exists(save_dir):
     ...:             print("[INFO] creating directory")
     ...:             os.makedirs(save_dir)
     ...:             print("INFO create Dir result: " + str(save_dir))
     ...:             
     ...:         f = None
     ...:         try:
     ...:             print("{INFO} Trying to open the file for writing logs")
     ...:             f = open('logs/' + self.conf['filename'], 'w')
     ...:             print("{INFO} realpath of file is: " + os.path.realpath(f.name))
     ...:             print("{INFO} abs path of file is: " + os.path.abspath(f.name))
     ...:             f.write(str(logVal))    # Assignment not necessary
     ...:             print("INFO file write: " + str(logVal))    # directly print logVal since it is the content you want to show
     ...:         except IOError as er:
     ...:             print("[INFO]" + str(er))
     ...:         finally:
     ...:             f.close()
     ...:         print("[INFO] WRITTING TO FILE")
     ...: 

In [   ]: Test_Instance = My_Object()

In [   ]: Test_Instance._store_file("This is a test")
{INFO} Trying to open the file for writing logs
{INFO} realpath of file is: xxxxxx
{INFO} abs path of file is: xxxxxx    
INFO file write: This is a test
[INFO] WRITTING TO FILE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...