赞
踩
train.py文件
1.FILE = Path(__file__).resolve()
__file__代表的是train.py文件,Path(__file__).resolve()结果是train.py文件的绝对路径。
2.ROOT = FILE.parents[0]
获得train.py父目录的绝对路径
3.sys.path
是一个列表list,里面包含了已经添加到系统的环境变量路径。
当导入一个模块时,默认情况下python解释器会搜索当前目录、已安装的内置模块和第三方模块。搜索路径放在sys模块的path中。sys模块包含与python解释器和它的环境有关的函数,可以通过dir(sys)来查看方法和成员属性。
4.可以永久的将路径添加到sys.path中:
(1)将写好的py文件添加到系统环境变量的目录下。
(2)在 /usr/lib/python10/site-packages 下面新建一个.pth 文件(以pth作为后缀名);将模块的路径写进去,一行一个路径,如: vim pythonmodule.pth
/home/liu/shell/config /home/liu/shell/base
(3)使用PYTHONPATH环境变量
export PYTHONPATH=$PYTHONPATH:/home/user/shell/config
5.导入自定义模块
当引用模块和执行脚本文件不在同一个目录时,可按照如下形式添加路径:
(1)导入的包在另一个项目文件,在运行程序过程中,需要先加载导入的包,加载过程中python解释器会默认sys.path搜索路径取搜索。
(2)如果该包无法通过sys.path路径搜索,就需要将该包的搜索路径添加到自己程序脚本的默认搜索路径,重新运行程序。
import sys sys.path.append(’引用模块的地址') sys.path.append("..") # 添加当前路径的上一级目录
这种方法只作用于脚本运行时,运行之后路径导入就会失效。
6.ROOT = Path(os.path.relpath(ROOT, Path.cwd()))
os模块是一个对接操作系统的模块。
python中的cwd是current work dir 的意思,就是当前工作目录。当前工作目录并不是你运行的python文件所在的目录就叫做工作目录,而是你在命令行中运行脚本时,命令行显示你所在的目录。当前工作目录并不是你运行的python文件所在的目录就叫做工作目录,而是你在命令行中运行脚本时,命令行显示你所在的目录。Path.cwd()获取的位置就是终端所在的位置。
os.path.relpath()用于从当前工作目录或给定目录获取给定路径的相对文件路径。
os.path.relpath(path, start = os.curdir)
给定路径的相对路径将相对于start指示的目录进行计算。此参数的默认值为os.curdir,它是操作系统用来引用当前目录的常量字符串。
7.os.getenv('LOCAL_RANK', -1),用于多卡训练控制参数。
- LOCAL_RANK = int(os.getenv('LOCAL_RANK', -1)) # 本地序号,是这台机器上的第几个Worker
- RANK = int(os.getenv('RANK', -1)) # 进程序号。这个Worker是全局第几个 Worker
- WORLD_SIZE = int(os.getenv('WORLD_SIZE', 1)) # 总共有几个 Worker
- '''查找名为LOCAL_RANK,RANK,WORLD_SIZE的环境变量,若存在则返回环境变量的值,若不存在则返回第二个参数(-1,默认None)
- rank和local_rank的区别: 两者的区别在于前者用于进程间通讯,后者用于本地设备分配。
- '''
os.getenv(key, default = None)
返回环境变量键的值(如果存在),否则返回默认值。
8.parser.add_argument('--quad', action='store_true', help='quad dataloader')
这个四元组函数重新调整批处理,从16x3x640x640 调整为 4x3x1280x1280。他仅仅是重新排列批处理中的马赛克。 他允许批处理过程中某些图像进行2倍放大。
9.vars()函数:以字典形式返回参数中每个成员的当前值。
print_args(vars(opt))
10.可复用代码:递增文件或目录路径
- from pathlib import Path
- import os
-
- def increment_path(path, exist_ok=False, sep='', mkdir=False):
- # Increment file or directory path, i.e. runs/exp --> runs/exp{sep}2, runs/exp{sep}3, ... etc.
- path = Path(path) # os-agnostic
- # 如果文件路径存在并且不创建
- if path.exists() and not exist_ok:
- path, suffix = (path.with_suffix(''), path.suffix) if path.is_file() else (path, '')
-
- # Method 1
- # 增加第n个文件夹名称,直到该文件夹不存在,跳出循环,创建该文件
- for n in range(2, 9999):
- p = f'{path}{sep}{n}{suffix}' # increment path
- if not os.path.exists(p): #
- break
- path = Path(p)
-
- # Method 2 (deprecated)
- # dirs = glob.glob(f"{path}{sep}*") # similar paths
- # matches = [re.search(rf"{path.stem}{sep}(\d+)", d) for d in dirs]
- # i = [int(m.groups()[0]) for m in matches if m] # indices
- # n = max(i) + 1 if i else 2 # increment number
- # path = Path(f"{path}{sep}{n}{suffix}") # increment path
-
- if mkdir:
- path.mkdir(parents=True, exist_ok=True) # make directory
-
- return path
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。