我们正在使用一个部署到Windows和Linux的代码库,有时在不同的目录中。项目中的一个模块应该如何引用项目中的一个非Python资源(CSV文件等)?
如果我们这样做:
thefile=open('test.csv')
或:
thefile=open('../somedirectory/test.csv')
只有当脚本从一个特定目录或目录的子集运行时,它才起作用。
我想做的是:
path=getBasePathOfProject()+'/somedirectory/test.csv'
thefile=open(path)
有可能吗?
Tags:
如果您正在使用安装工具或分发(setup.py安装),那么访问这些打包资源的“正确”方法似乎是使用package_资源。
你的例子是
当然,哪个读取资源和读取的二进制数据将是我的数据的值
如果您只需要文件名,还可以使用
示例:
它的优点是,即使是像鸡蛋一样的档案分发,它也能保证工作。
见http://packages.python.org/distribute/pkg_resources.html#resourcemanager-api
在Python中,路径是相对于当前工作目录的,在大多数情况下,该目录是运行程序的目录。当前工作目录很可能与模块文件的目录不同,因此使用相对于当前模块文件的路径总是一个错误的选择。
使用绝对路径应该是最好的解决方案:
尝试使用相对于当前文件路径的文件名。“./my_file”的示例:
在Python 3.4+中,还可以使用pathlib:
相关问题 更多 >
编程相关推荐