python中使用os模块中的path模块进行文件路径的读取和操作。通过sys.path来对导入模块的检索路径进行操作。
import os导入模块。
PS: 在开始之前先说明下, __file__文件为该执行的文件的相对路径的文件名而已。所以在当前目录下运行即文件名本身,在上一层路径下运行,则是file所在的路径+文件名的相对路径。
路径相关-----------------------------------------------------------------------------------------------------------------------------------------------------
os.getcwd()
获取当前目录路径(路径,不包含文件名)
此方法获取的并不是该执行文件所在的目录,是python命令运行的路径。
如 该文件为 HOME/py/path.py,如果是在HOME/py/目录下用python path.py运行,打印/home/xxx/py
但是如果cd到上一层目录, 通过 python ./py/path.py运行, 打印/home/xxx/
os.path.abspath(__file__)
获取文件的绝对路径(含文件名),当然也可以使用os.path.abspath("home/whj/file")这样的绝对路径打印该路径,所以该函数主要就是将括弧中的绝对路径打印(完全的路径,包含文件名),该方法与在何层目录下运用命令无关。
os.path.dirname(path)
返回文件路径。
如os.path.dirname(__file__)在当前目录下python命令运行该文件,打印的为空(因为__file__只是相对路径,即文件名而已。)假设该文件位于名为/ss/的路径下的path.py文件,现在cd到上一层路径,用python ./ss/path.py运行,则打印的是./ss。当然如果使用python ss/path.py运行,打印的是ss。
当然也可以在括弧中书写路径,如os.path.dirname("/home/czc"),打印的是/home 但os.path.dirname("/home/czc/") 打印的是/home/czc
可件对于路径而言,有无“/”意义不同。
os.path.basename(path)
返回文件名,只返回文件名,如果只是路径,则返回为空。
os.path.split(path)
把路径分割成 dirname 和 basename,返回一个元组。
os.path.join(path1[, path2[, ...]])
把目录和文件名合成一个路径
os.path.exists(path)
判断该目录(严格而言应该叫做路径,因为也会判断文件是否存在)是否存在。
返回值为 True 或者 False 。
os.path.isfile(path)
判断该文件(必须是文件,路径则返回False)是否存在。
返回值为 True 或者 False 。
os.path.isdir(path)
判断该路径(必须是路径,文件则返回False)是否存在。
返回值为 True 或者 False 。
os.path.islink(path)
判断路径是否为链接
路径相关-----------------------------------------------------------------------------------------------------------------------------------------------------
路径导入相关------------------------------------------------------------------------------------------------------------------------------------------------
python中sys.path是导入模块的路径,是一个list。(即PYTHONPATH)你可以用list的append、insert、remove、pop、sort之类的方法修改。
可以在python 环境下使用sys.path.append(path)添加相关的路径,但在退出python环境后自己添加的路径就会自动消失!
import sys
sys.path.append(Path)
可以选择用sys.path.insert(0,‘/path’),这样新添加的目录会优先于其他目录被import检查
sys.path.insert(0, '引用模块的地址')
sys.path.remove("xxxxx") 去掉地址
#! /usr/bin/env python
# -*- coding:UTF-8 -*-
from __future__ import print_function
import os
# ---------------------------------------------------------------------------------------------------------------------------------------------------------
current_path = os.getcwd()
abspath_path = os.path.abspath(__file__)
abspath_path_write_path = os.path.abspath("/home/czc/")
abspath_path_write_file = os.path.abspath("/home/czc/1.txt")
# ---------------------------------------------------------------------------------------------------------------------------------------------------------
dir_path = os.path.dirname(__file__) # __file__是相对路径,如在此根目录下运行是空白,如在上一层目录下,则是上一层目录的名
dir_abspath_path = os.path.dirname(os.path.abspath(__file__)) # 绝对路径下,则无论在何层运行都为同一结果,即上一层目录名的全路径
dir_abspath_path_write = os.path.dirname("/home/czc/") # 最终打印的是/home/czc
dir_abspath_path_write_ = os.path.dirname("/home/czc") # 最终打印的是/home
# ---------------------------------------------------------------------------------------------------------------------------------------------------------
basename = os.path.basename(__file__)
basename_write_path = os.path.basename("/home/czc/") # 因为是路径名,所以打印出来的为空
basename_write_file = os.path.basename("/home/czc") # 认为czc为文件,所以打印czc
basename_ = os.path.basename(os.path.abspath(__file__))
# ---------------------------------------------------------------------------------------------------------------------------------------------------------
path_exists = os.path.exists(os.path.abspath(__file__)) # 为真
path_exists_write = os.path.exists("/home/czc/qq.txt") # 为假 所以所谓路径即含文件名 所以当文件不存在的,亦为假
path_exists_write__path = os.path.exists("/home/czc/")
# ---------------------------------------------------------------------------------------------------------------------------------------------------------
file_isfile = os.path.isfile(os.path.abspath(__file__))
file_isfile_ = os.path.isfile(__file__)
file_isfile_path = os.path.isfile("/home/czc/") # 因为是路径,所以为假,不管带不带“/”,都为假
file_isfile_path_ = os.path.isfile("/home/czc")
# ---------------------------------------------------------------------------------------------------------------------------------------------------------
dir_isdir_file = os.path.isdir(os.path.abspath(__file__))
dir_isdir_path = os.path.isdir("/home/czc/")
# ---------------------------------------------------------------------------------------------------------------------------------------------------------
print("当前的文件路径是:{}".format(current_path))
print("py文件的绝对路径是:{}".format(abspath_path))
print("手写的绝对路径(不含文件名带“/”)是:{}".format(abspath_path_write_path))
print("手写的绝对路径(含文件名)是:{}".format(abspath_path_write_file))
print("py文件的父目录是:{}".format(dir_path ))
print("py文件绝对路径的父目录是:{}".format(dir_abspath_path))
print("手写的路径(不含文件名带“/”)的父目录是:{}".format(dir_abspath_path_write))
print("手写的路径(含文件名,即无“/”)的父目录是:{}".format(dir_abspath_path_write_))
print("py文件的相对路径文件名是:{}".format(basename))
print("py文件的绝对路径文件名是:{}".format(basename_))
print("手写的路径(不含文件)的文件名是:{}".format(basename_write_path))
print("手写的路径(含文件, 即最后没有“/”)的文件名是:{}".format(basename_write_file))
print("判断py文件绝对路径(含文件名,文件名为真)是否存在:{}".format(path_exists))
print("判断手写文件绝对路径(含文件名,路径为真,文件名为假)是否存在:{}".format(path_exists_write))
print("判断手写文件绝对路径(不含文件名,路径为真)是否存在:{}".format(path_exists_write__path))
print("判断文件(绝对路径)是否是文件:{}".format(file_isfile))
print("判断文件(相对路径)是否是文件:{}".format(file_isfile_))
print("判断手写路径(带“/”)是否是文件:{}".format(file_isfile_path))
print("判断手写路径(不带“/”)是否是文件:{}".format(file_isfile_path_))
print("判断手写文件路径是路径:{}".format(dir_isdir_file))
print("判断手写路径(带“/”)是路径:{}".format(dir_isdir_path))