Python,记住文件的默认路径

Python,记住文件的默认路径,python,file,path,trace,Python,File,Path,Trace,我有一个python项目的结构有点像这样 Project/ src/ main.py include.py trace.py doc/ readme.txt lib/ trace/ treetrace.txt datatrace.txt 在trace.py中,我有一些应该写入Project/trace/using中的文件的代码 with open("path-to-Projects/trace/so

我有一个python项目的结构有点像这样

Project/
   src/
      main.py
      include.py
      trace.py
   doc/
      readme.txt
   lib/
   trace/
      treetrace.txt
      datatrace.txt
在trace.py中,我有一些应该写入Project/trace/using中的文件的代码

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中,脚本的路径位于变量
\uu文件\uu
中。从中减去文件名部分,然后追加../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\u filename
    包含您要查找的文件的路径

    • Bleh,我的
      os.path.join
      呼叫错误。我喜欢
      os.path.dirname
      os.path.split(\uuu file\uuu)[0]
      (它们返回相同的值,但是
      dirname
      名称使事情更清楚),但是你的
      os.path.join
      调用是正确的,所以我删除了我的,并对你的进行了升级。我不知道
      os.path.dirname
      。好电话。