【问题标题】:Python, Remembering a default path for filesPython,记住文件的默认路径
【发布时间】:2014-01-11 05:18:59
【问题描述】:

我有一个类似这样结构的 python 项目

Project/
   src/
      main.py
      include.py
      trace.py
   doc/
      readme.txt
   lib/
   trace/
      treetrace.txt
      datatrace.txt

在 trace.py 中,我有应该使用写入 Project/trace/ 中的文件的代码

with open("path-to-Projects/trace/somefile.txt") as outfile:
    outfile.write("some-trace-data")

我想这样做,如果有人从 Project/ 或 Project/src/ 或此结构中的任何目录运行 trace.py,trace.py 知道 Project/trace/ 的路径,以便跟踪文件不'不要被写入错误的目录。这可能吗?

【问题讨论】:

    标签: python file path trace


    【解决方案1】:

    我相信您的目标是写入一个位置与您的脚本相关的文件。在 Python 中,脚本的路径位于变量 __file__ 中。从那里减去文件名部分,然后附加 ../trace/filename.txt。这是我的做法:

    import os
    
    # Get the directory in which this script resides
    script_path = os.path.split(__file__)[0]
    
    # Trace file's location is relative to the script
    trace_filename = os.path.join(script_path, '..', 'trace', 'out.txt')
    
    print 'Trace file is at: {}'.format(trace_filename)
    

    讨论

    • os.path.split() 函数将脚本的路径名分成几部分:路径和文件名。我只对路径(索引 0)感兴趣。
    • 在此代码块之后,trace_filename 包含您要查找的文件的路径。

    【讨论】:

    • Bleh,我的os.path.join 打错了。我喜欢os.path.dirnameos.path.split(__file__)[0] 更好(它们返回相同的值,但dirname 的名称使发生的事情更清楚),但你的os.path.join 调用是正确的,所以我删除了我的并赞成你的。
    • 我不知道os.path.dirname。好电话。
    猜你喜欢
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 2015-07-30
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    相关资源
    最近更新 更多