python打开路径选择文件_选择Python文件访问路径

该博客讨论了如何使用os.path.expanduser函数结合环境变量或命令行参数,来安全地确定用户主目录下子目录的路径。在创建或读取文件时,它提供了一个跨平台的解决方案,并处理可能的异常,如路径已存在但不是目录的情况。文章还包含了一个示例函数,展示如何实现这一功能。
摘要由CSDN通过智能技术生成

os.path.expanduser是一个良好的开端 – 领先〜/扩展到“用户的主目录”,这是在Unix-y和Windows系统上合理启发的计算机.当然,您不希望直接将文件放在主目录中,但是它的子目录(如果不存在则必须进行)是合理的默认值.

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

编辑:OP请求一个例子:

Suppose I wanted it in ~/tempfoler/

and the file being passed to it was

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)

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值