首页 > 编程语言 >Python基础:在多个.py文件组成的项目中如何安全的使用文件路径(绝对路径安全,相对路径可移植性好,如何选?)

Python基础:在多个.py文件组成的项目中如何安全的使用文件路径(绝对路径安全,相对路径可移植性好,如何选?)

时间:2024-06-03 17:30:55浏览次数:23  
标签:脚本 文件 路径 项目 Python py 根目录

在Python项目中使用相对路径时,路径的计算是基于当前执行脚本的位置,即当前工作目录(Current Working Directory, CWD)。这通常是你从中启动Python解释器的目录。这种方式在简单脚本或当你直接从命令行运行单个脚本文件时行得通,但在较大的项目或多层目录结构中可能导致路径错误。要确保在多个 .py 文件中稳定、正确地使用文件路径,可以采用以下方法:

1. 使用绝对路径

这是一种确保路径总是正确的简单方法,但它牺牲了代码的可移植性。

2. 设定项目根目录

在项目的主脚本中定义一个基准路径,然后其他模块和脚本相对于这个基准路径来指定资源。常见的实践是在项目的入口点(如主脚本或主模块)设置根目录,并通过相对这个根目录来访问其他资源。

示例:

假设你的项目结构如下:

my_project/
│
├── main.py
├── config.py
│
├── data/
│   └── my_data.csv
│
└── src/
    ├── module1.py
    └── module2.py

main.py 中,你可以设置一个全局变量来定义根路径:

import os

# 设置根目录为当前脚本所在目录
BASE_DIR = os

标签:脚本,文件,路径,项目,Python,py,根目录
From: https://blog.csdn.net/PoGeN1/article/details/139420418

相关文章

  • Python数据分析【Numpy系列】np.linspace()用法详解
    np.linspace()是NumPy库中一个非常有用的函数,它用于在指定的区间内生成等间距的样本值。这个函数非常适合在数值分析、数据可视化和信号处理等领域生成数据点。函数语法numpy.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None,axis=0)......
  • Notepad++文件内容对比插件
    遇到一个比较有意思的测试任务,上报日志功能接口路由需要更换V2版本,需要测试对比V1和V2版本上报的数据有没有异常点思路很简单,使用相同的数据遍历调用V1和V2版本的接口路由,取出最后的日志接口对比即可Notepad++插件compare安装插件--插件管理--搜素compare安装即可(安装插件后程......
  • Python3 笔记:extend()、append() 和 +号 的区别
    1、extend()可以向一个列表中添加另外一个列表中的所有元素。list1=[1,2,3,4]list2=[3,4,5,6]list1.extend(list2)print(list1) #运行结果:[1,2,3,4,3,4,5,6]print(list2) #运行结果:[3,4,5,6]2、append()用于向列表末尾添加元素。list1=[1,2,3,4]li......
  • .npmrc文件是什么?用来干嘛的?
    1.是什么?.npmrc文件是一个npm的配置文件,详见npmrcDescription2.用来干嘛的?用于配置npm(NodePackageManager)的行为和设置。它可以存在于不同的层级,包括全局配置、本地项目配置、用户级别配置等。通过.npmrc文件,你可以自定义npm的许多方面,如注册表地址、缓存位置、代......
  • 利用python批量重命名(将「歌手名-歌名.mp3」更为「歌名-歌手名.mp3」)
    效果原始:修改后:python代码importosdefrename_files(directory):forfilenameinos.listdir(directory):if"-"infilenameandfilename.endswith(".mp3"):#分割文件名为歌手名和歌曲名parts=filename.rsplit("-......
  • 利用 word VBA 将投标文件偏离参数表列数据拷贝至技术偏差表中
    使用vba将正偏离参数表的第一列信息复制粘贴至对应的技术偏离表的第4列中。需要同时打开两个word文件,在技术偏差表中打开VBE(可以用ctrl+f11快捷键),插入模块。忽略格式的方式,SubCopyDataToTable()Windows("正偏离参数表.docx").ActivateFori=1ToActiveDoc......
  • Python - qiniu模块实例
    importqiniuimportrequestsimportjsonak='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'sk='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'###构建七牛的验证对象q=qiniu.Auth(ak,sk)#获取该账号下的域名列表getdomain_url="http://api.qiniu.com/domai......
  • pytest运行报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xaf in posit
    pytest运行报错:UnicodeDecodeError:‘gbk’codeccan’tdecodebyte0xafinposition82:illegalmultibytesequence  D:\Python\environment\python3.9.7\python3.exeD:/Python/nas_autotest/run.pyTraceback(mostrecentcalllast):File"D:\Python\......
  • C#.NET根据不同业务类别类型写入不同文件中,动态创建log4net实例验证
    C#.NET根据不同业务类别类型写入不同文件中,动态创建log4net实例验证 参考了:https://www.cnblogs.com/-dawn/p/8598566.html GetLog4netInstance:usinglog4net;usinglog4net.Appender;usinglog4net.Config;usinglog4net.Core;usinglog4net.Filter;usinglog4net.L......
  • Pytorch根据论文手搓CoPE
    根据论文《ContextualPositionEncoding: LearningtoCountWhat’sImportant》编写的CoPE代码。具备多头计算能力,本人水平不高,个人代码未经验证,有问题和建议欢迎指出。CoPE代码为代替LlamaModel中的RoPE而设计,因此函数名称类似于LlamaModel的RoPE,但实际功能略有不同,有待商......