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))