首页 > 解决方案 > 打开相对路径并写入

问题描述

def generate_log(dirname, log_object):
    print(os.path.dirname(__file__),'dfsdfds')
    print(os.listdir())
    for smell in log_object:  
        log = open("../../output/logs/{}_logs".format(smell), "w")
        for elem in log_object[smell]:
            log.write('filename: {}, smelly_lines: {}, metric: {}\n'.format(elem['filename'], str(elem['lineno']), str(elem['metric'])))

我的函数尝试将一些日志写入output/logs/ 目录我调用此函数的目录是C:\Users\user\Desktop\proj\src\Detector. 由于我希望output在其中生成/proj作为我的项目根目录的目录,所以我认为这样做../../会起作用,但它给了我

log = open("../../output/logs/{}_logs".format(smell), "w") FileNotFoundError: [Errno 2] No such file or directory: '../../output/logs/long_method_logs'

我能做些什么来解决这个问题吗?

标签: pythonfilepath

解决方案


您应该使用os模块及其子模块os.path

为了加入你应该做的路径os.path.join(path1, path2)

在您的情况下,您应该执行以下操作:

log = open(os.path.join(os.pardir, os.pardir, "output", "logs", "{}_logs").format(smell), "w")

你也应该在退出前close通过这个文件log.close()

为此目的,有一个日志记录模块


推荐阅读