选择Python文件访问路径

时间:2009-11-20 15:14:23

标签: python path

我的项目的一个功能是允许用户创建自己的小.txt文件,将其放在硬盘上的某个位置,然后可以将其用作我应用程序的一部分标准。

我可以使用大多数操作系统的固定“通用”(?)路径吗?或者是否有人有任何可以帮助我的建议或指导?

仅供参考,在开发过程中,我刚刚使用了一个固定位置(/ home / user / Desktop / folder1 /“),然后指定了文件名,以便完成路径。

3 个答案:

答案 0 :(得分:7)

os.path.expanduser是一个好的开始 - 领先的~/扩展为“用户的主目录”,这是Unix-y和Windows系统上合理的启发式计算机。当然,你不想直接把你的文件放在家里,但是你的子目录(如果还没有那么你必须要做)是合理的默认值。

当然,允许通过传递给程序的环境变量或命令行标志来覆盖此设置,因为某些平台对于应用程序假设按照惯例放置此类辅助数据文件的位置非常挑剔。

编辑:OP要求举例:

  

假设我想在〜/ tempfoler /中   并且传递给它的文件是   args1.txt?

我建议通过以下函数找到确切的路径:

import errno
import os

def getfilepath(filename, foldername='tempfoler', envar='MYAPPDIR'):
  # check for environmental override
  if envar is not None and envar in os.environ:
    dirpath = os.environ[envar]
  else:
    dirpath = '~/%s' % foldername
  # expand and ensure it's a directory
  expanded = os.path.expanduser(dirpath)
  if not os.path.isdir(expanded):
    if os.path.lexists(expanded):
      # we're in dire trouble: the path is a file, not a directory!
      # you could punt to some default value, but I prefer to raise
      # an exception and allow higher levels to deal with this
      raise IOError(errno.EEXISTS, "Path is a file, not a dir", expanded)
    # the following may also raise (permission issues, &c)
    os.makedirs(expanded)
  # now the directory exists, the file may or may not (doesn't matter)
  return os.path.join(expanded, filename)

这里嵌入了一些设计选择 - 针对各种问题引发异常(更高级别可能会捕获它们并适当地处理它们,例如要求用户提供替代方案 - 这种较低级别的功能无法正常执行! ),返回可能存在或不存在的文件的路径(因此适合于读取现有文件或编写新文件),等等。

你也可以选择做更少的检查,更多地依赖于为各种异常引发的自动异常(反之亦然),我只是觉得这个有合理的平衡(当然,你很容易调整,如果你喜欢对这些问题采取不同的方法)。但关键的想法是始终关注可能出错的问题以及如何处理(通常通过更高级别的代码,可能要求用户选择替代方案的唯一适当点)来使您的软件更加健壮。

答案 1 :(得分:3)

wx.StandardPaths模块包含返回文件系统中各种标准位置的方法,并透明地尝试在Unix,Mac OS X和Windows下执行“正确的操作”。

答案 2 :(得分:0)

复制/粘贴人群......

import os
file_obj = open(os.path.expanduser('~/yourapp/file.txt'), 'w')
祝你好运。