【问题标题】:Opening a relative path and writing打开相对路径并写入
【发布时间】:2019-04-24 22:02:24
【问题描述】:
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。因为我希望在我的项目根目录/proj 中生成output 目录,所以我认为../../ 会起作用,但它给了我

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

有什么办法可以解决这个问题吗?

【问题讨论】:

标签: python filepath


【解决方案1】:

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

要加入路径,您应该这样做os.path.join(path1, path2)

在你的情况下,你应该这样做:

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

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

为此,有一个logging 模块

【讨论】:

  • 感谢您的回答,但我仍然得到这个:log = open(os.path.join(os.pardir, os.pardir, "output", "logs", "{}_logs").format(smell), "w") FileNotFoundError: [Errno 2] No such file or directory: '..\\..\\output\\logs\\long_method_logs'
  • @Dawn17 可能是您向我们展示的路径中没有这样的目录
  • 我希望在我们运行该目录时生成该目录。我们应该提前做好吗?
  • @Dawn17 你也应该投票赞成答案,直到你有足够的帮助。我还想补充一点,您应该创建这些路径。可能是手动可能是通过os.mkdir
  • 我没有投赞成票。那么,我们应该在创建日志文件之前以编程方式创建这些文件夹吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
  • 1970-01-01
  • 2017-10-07
相关资源
最近更新 更多