python3--os.path获取当前文件的绝对路径和所在目录

本文详细介绍了Python中__file__属性的作用和用法,包括如何通过它获取当前文件的绝对路径和所在目录,以及如何利用os.path进行路径操作。
该文章已生成可运行项目,

一.__file__

关于__file__属性,python官方文档的定义是:

 __file__ is the pathname of the file from which the module was loaded, if it was loaded from a file. The __file__ attribute may be missing for certain types of modules, such as C modules that are statically linked into the interpreter; for extension modules loaded dynamically from a shared library, it is the pathname of the shared library file.

翻译:

如果模块是从文件加载的,那么__file__就是文件的路径名。模块是从这个路径加载的。某些类型的模块可能缺少该属性,例如静态链接到解释器的C模块; 对于从共享库动态加载的扩展模块,它是共享库文件的路径名。 

说明:

虽然文档说了__file__是文件路径名,但是却没有说是绝对路径还是相对路径。因为模块既可以从绝对路径加载也可以从相对路径加载。所以这个__file__的值可能是绝对路径也可能是相对路径。示例:

如我们在某个模块里新建tests.py文件,文件里面的内容为:

# coding:utf-8
# test.py 打印__file__的值

print(__file__)

运行后可能存在的输出结果:

二.获取当前文件的绝对路径

current_path = os.path.abspath(__file__)

三.获取当前文件所在目录

current_dir = os.path.dirname(os.path.abspath(__file__))

示例:

四.os.path.join()

在前面两步的基础上,可以使用os.path.join()进行路径拼接。

五.参考资料

[1]  关于__file__属性:https://docs.python.org/3/reference/datamodel.html

[2] 关于os.path的操作:https://docs.python.org/3.7/library/os.path.html

本文章已经生成可运行项目
帮我把os.path.abspath(path) 返回绝对路径 os.path.basename(path) 返回文件os.path.commonprefix(list) 返回list(多个路径)中,所有path共有的最长的路径 os.path.dirname(path) 返回文件路径 os.path.exists(path) 如果路径 path 存在,返回 True;如果路径 path 不存在或损坏,返回 False。 os.path.lexists(path) 路径存在则返回 True,路径损坏也返回 True os.path.expanduser(path) 把 path 中包含的 ~ ~user 转换成用户目录 os.path.expandvars(path) 根据环境变量的值替换 path 中包含的 $name ${name} os.path.getatime(path) 返回最近访问时间(浮点型秒数) os.path.getmtime(path) 返回最近文件修改时间 os.path.getctime(path) 返回文件 path 创建时间 os.path.getsize(path) 返回文件大小,如果文件不存在就返回错误 os.path.isabs(path) 判断是否为绝对路径 os.path.isfile(path) 判断路径是否为文件 os.path.isdir(path) 判断路径是否为目录 os.path.islink(path) 判断路径是否为链接 os.path.ismount(path) 判断路径是否为挂载点 os.path.join(path1[, path2[, ...]]) 把目录文件名合成一个路径 os.path.normcase(path) 转换path的大小写斜杠 os.path.normpath(path) 规范path字符串形式 os.path.realpath(path) 返回path的真实路径 os.path.relpath(path[, start]) 从start开始计算相对路径 os.path.samefile(path1, path2) 判断目录文件是否相同 os.path.sameopenfile(fp1, fp2) 判断fp1fp2是否指向同一文件 os.path.samestat(stat1, stat2) 判断stat tuple stat1stat2是否指向同一个文件 os.path.split(path) 把路径分割成 dirname basename,返回一个元组 os.path.splitdrive(path) 一般用在 windows 下,返回驱动器名路径组成的元组 os.path.splitext(path) 分割路径,返回路径名文件扩展名的元组 os.path.splitunc(path) 把路径分割为加载点与文件 os.path.walk(path, visit, arg) 遍历path,进入每个目录都调用visit函数,visit函数必须有3个参数(arg, dirname, names),dirname表示当前目录目录名,names代表当前目录下的所有文件名,args则为walk的第三个参数 os.path.supports_unicode_filenames 设置是否支持unicode路径名修改成### Python os模块函数功能分类整理 #### 1. **文件目录操作** - **路径处理** - `os.path.join()`:拼接路径 - `os.path.abspath()`:获取绝对路径 - `os.path.dirname(path)`:返回目录路径(去掉文件名) ```python os.path.dirname("E:/Read_File/read_yaml.py") # 输出: E:/Read_File ``` - `os.path.basename()`:提取文件- `os.path.splitext(path)`:分割文件名与扩展名(返回二元组) ```python os.path.splitext('a/b/text.txt') # 输出: ('a/b/text', '.txt') ``` - **目录遍历与操作** - `os.walk(top)`:递归遍历目录树(返回路径、子目录文件列表) - `os.mkdir()` / `os.makedirs()`:创建目录(单级/多级) - `os.rmdir()` / `os.removedirs()`:删除目录(单级/多级) - **文件属性** - `os.path.getsize(file)`:获取文件大小(字节) - `os.path.exists()`:检查路径是否存在 - `os.path.isfile()` / `os.path.isdir()`:判断是否为文件/目录 --- #### 2. **环境变量管理** - `os.environ`:字典形式存储所有环境变量 - `os.environ.get(key)`:安全获取环境变量值(无键时返回 `None`) ```python db_password = os.environ.get("DB_PASSWORD") # 安全获取敏感信息 ``` --- #### 3. **进程与系统控制** - **进程管理** - `os.system(command)`:执行系统命令 - `os.kill(pid, signal)`:终止进程 - **系统信息** - `os.name`:操作系统名称(如 `'nt'` 表示 Windows) - `os.sep`:系统路径分隔符(如 `\` 或 `/`) --- #### 4. **路径规范化与扩展** - `os.path.normpath(path)`:规范化路径(移除冗余分隔符) ```python os.path.normpath("C://Users//test") # 输出: C:\Users\test ``` --- #### 5. **文件操作** - `os.rename(src, dst)`:重命名/移动文件 - `os.remove(path)`:删除文件 - `os.stat(path)`:获取文件状态(大小、修改时间等) ---这样然后用.md文件格式返回给我
07-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值