欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python如何獲取文件路徑/目錄

 更新時(shí)間:2020年09月22日 11:27:41   作者:諸子流  
這篇文章主要介紹了Python如何獲取文件路徑/目錄,幫助大家更好的利用python處理文件,感興趣的朋友可以了解下

一、獲取文件路徑實(shí)現(xiàn)

1.1 獲取當(dāng)前文件路徑

import os

current_file_path = __file__
print(f"current_file_path: {current_file_path}")

__file__變量其實(shí)有個(gè)問(wèn)題,當(dāng)文件被是被調(diào)用文件時(shí)__file__總是文件的絕對(duì)路徑;但當(dāng)文件是直接被執(zhí)行的文件時(shí),__file__并不總是文件的絕對(duì)路徑,而是你執(zhí)行該文件時(shí)給python傳的路徑。比如你是python xxx/yyy.py形式執(zhí)行的,那么此時(shí)__file__的值就是xxx/yyy.py。

可以使用以下更統(tǒng)一的方式獲取文件路徑:

import inspect

current_file_name = inspect.getfile(inspect.currentframe())
print(f"current_file_name: {current_file_name}")

1.2 獲取調(diào)用文件的文件路徑

有時(shí)候我們想要獲取調(diào)用當(dāng)前文件的父文件的文件路徑,此時(shí)可以通過(guò)以下代碼實(shí)現(xiàn):

import inspect

def be_call_fun():
  # stack()返回的是調(diào)用棧列表。
  frame_stack = inspect.stack()
  # 0是標(biāo)識(shí)當(dāng)前函數(shù)的棧,1是標(biāo)識(shí)上一層函數(shù)的棧,依此類(lèi)推。
  # 也就是這個(gè)數(shù)值不一定是1,要看你要獲取其文件路徑的函數(shù)在第幾層
  caller_frame = frame_stack[1]
  caller_file_path = caller_frame.filename
  # 由于當(dāng)前調(diào)用函數(shù)和被調(diào)用函數(shù)放在同一個(gè)文件,所以文件名還是當(dāng)前文件名
  # 可將調(diào)用函數(shù)和被調(diào)用函數(shù)放到不同文件進(jìn)行觀察
  print(f"caller_file_path: {caller_file_path}")

def caller_fun():
  be_call_fun()

if __name__ == "__main__":
  caller_fun()

二、獲取目錄

2.1 獲取當(dāng)前工作目錄

所謂當(dāng)前工作目錄,就是你執(zhí)行python命令執(zhí)行python文件時(shí),shell所在的文件夾。

import os

current_working_dir = os.getcwd()
print(f"current_working_dir: {current_working_dir}")

2.2 借助路徑獲取目錄

第一大節(jié)我們已經(jīng)借紹了幾種獲取文件路徑的方式,要獲取對(duì)應(yīng)的文件所處的文件夾,可直接借助這些路徑+os.path.dirname()實(shí)現(xiàn)。

import os

# 文件絕對(duì)路徑
current_file_path = __file__
# 借助dirname()從絕對(duì)路徑中提取目錄
current_file_dir = os.path.dirname(current_file_path)
print(f"current_file_dir: {current_file_dir}")

# 類(lèi)似地可以借助basename()從絕對(duì)路徑中提取文件名
# current_filename = os.path.basename(current_file_path)

# 另外建議使用os.path.join()來(lái)實(shí)現(xiàn)路徑拼接,這樣不用自己再關(guān)注路徑分隔符的問(wèn)題
# 再有是os.path.join()參數(shù)并不一定要就是目錄+文件名形式,不管多少個(gè)參數(shù)都可以拼接
# current_file_path = os.path.join(current_file_dir, current_filename)

三、文件和目錄的其他一些操作

3.1 文件的常用操作

r--讀模式打開(kāi)文件,如果文件不存在則報(bào)錯(cuò)。
r+--讀寫(xiě)模式打開(kāi)文件,如果文件不存在則報(bào)錯(cuò)。寫(xiě)時(shí)原有內(nèi)容不會(huì)被清空,而是被替換式覆蓋。
w--寫(xiě)模式打開(kāi)文件,如果文件不存在則創(chuàng)建。已有內(nèi)容會(huì)被清空。
w+--讀寫(xiě)模式打開(kāi)文件,如果文件不存在則創(chuàng)建。已有內(nèi)容會(huì)被清空。
a--追加模式打開(kāi)文件,如果文件不存在則創(chuàng)建。
a+--讀追加模式打開(kāi)文件,如果文件不存在則創(chuàng)建。

import os


file_name = "test.txt"
new_file_name = "new_test.txt"

# 創(chuàng)建空白文件
open(file_name, 'w').close()

# 刪除文件
os.remove(file_name)

# 重命名文件
os.rename(file_name, new_file_name)

# 讀文件
with open(file_name, 'r') as fd:
  # 讀取所有內(nèi)容
  fd.read()
  # 讀取一行
  fd.readline()
  # 讀取所有行,返回為各行組成的形表
  fd.readlines()

# 遍歷文件各行簡(jiǎn)潔寫(xiě)法
for line in open(file_name, 'r', encoding='utf-8'):
  print(line)

# 寫(xiě)文件
with open(file_name, 'w') as fd:
  # 向文件寫(xiě)入內(nèi)容,需要自行添加\n
  fd.write("test_str")
  # 向文件寫(xiě)入內(nèi)容,需要自行添加\n
  # 和write的區(qū)別是,其參數(shù)除了可以是字符串,還可以是字符串列表
  fd.writelines(["test_str", "test_str"])

3.2 目錄的常用操作

import os


dir_name = "test_dir/dir_name"
new_dir_name = "test_dir/new_dir_name"

# 創(chuàng)建目錄。此種形式是的于shell的mkdir,在父目錄不存在時(shí)會(huì)創(chuàng)建失敗
os.mkdir(dir_name)
# 創(chuàng)建目錄。此種形式是的于shell的mkdir -p,在父目錄不存在時(shí)會(huì)自動(dòng)創(chuàng)建父文件夾
os.makedirs(dir_name, exist_ok=True)

# 刪除目錄。此種形式相當(dāng)于shell的rmdir,在目錄非空時(shí)刪除失敗
os.rmdir(dir_name)
# 刪除目錄。此種形式相當(dāng)于shell的rm -rf
import shutil
shutil.rmtree(dir_name)

# 重命名目錄。
os.rename(dir_name, new_dir_name)

# 遍歷目錄
# dir_path是當(dāng)前遍歷到的目錄。dir_names是dir_path下的文件夾列表。file_names是是dir_path下的文件列表
# 如果想實(shí)現(xiàn)目錄白名單,將白名單目錄從dir_names中去除即可
for (dir_path, dir_names, file_names) in os.walk(dir_name):
  for file_name in file_names:
    print(os.path.join(dir_path, file_name))

以上就是Python如何獲取文件路徑/目錄的詳細(xì)內(nèi)容,更多關(guān)于Python獲取文件路徑/目錄的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python?OpenCV超詳細(xì)講解透視變換的實(shí)現(xiàn)

    Python?OpenCV超詳細(xì)講解透視變換的實(shí)現(xiàn)

    OpenCV用C++語(yǔ)言編寫(xiě),它具有C?++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac?OS,OpenCV主要傾向于實(shí)時(shí)視覺(jué)應(yīng)用,并在可用時(shí)利用MMX和SSE指令,本篇文章帶你通過(guò)OpenCV實(shí)現(xiàn)透視變換
    2022-04-04
  • Pytorch對(duì)Himmelblau函數(shù)的優(yōu)化詳解

    Pytorch對(duì)Himmelblau函數(shù)的優(yōu)化詳解

    今天小編就為大家分享一篇Pytorch對(duì)Himmelblau函數(shù)的優(yōu)化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • 如何用python做簡(jiǎn)單的接口壓力測(cè)試

    如何用python做簡(jiǎn)單的接口壓力測(cè)試

    這篇文章主要介紹了如何用python做簡(jiǎn)單的接口壓力測(cè)試問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Flask如何結(jié)合Jinja2模板引擎返回渲染后HTML

    Flask如何結(jié)合Jinja2模板引擎返回渲染后HTML

    在 Flask 中結(jié)合 Jinja2 模板引擎返回渲染后的 HTML 是核心功能之一,本文主要介紹了詳細(xì)實(shí)現(xiàn)方法和最佳實(shí)踐,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-06-06
  • Python刪除列表中重復(fù)元素的七種方法舉例

    Python刪除列表中重復(fù)元素的七種方法舉例

    我們?cè)诿嬖囍泻芸赡苡龅浇o定一個(gè)含有重復(fù)元素的列表,刪除其中重復(fù)的元素,下面這篇文章主要給大家介紹了關(guān)于Python刪除列表中重復(fù)元素的七種方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • python 中 .py文件 轉(zhuǎn) .pyd文件的操作

    python 中 .py文件 轉(zhuǎn) .pyd文件的操作

    這篇文章主要介紹了python 中 .py文件 轉(zhuǎn) .pyd文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Python利用pptx操作PPT實(shí)現(xiàn)幻燈片的刪除與替換

    Python利用pptx操作PPT實(shí)現(xiàn)幻燈片的刪除與替換

    這篇文章主要為大家詳細(xì)介紹了python如何使用pptx庫(kù)實(shí)現(xiàn)操作PPTx幻燈片文件刪除并替換圖片,文中的示例代碼講解詳細(xì),感興趣的可以嘗試一下
    2023-02-02
  • Python循環(huán)一行的寫(xiě)法分享

    Python循環(huán)一行的寫(xiě)法分享

    這篇文章主要介紹了Python循環(huán)一行的寫(xiě)法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python利用flask sqlalchemy實(shí)現(xiàn)分頁(yè)效果

    Python利用flask sqlalchemy實(shí)現(xiàn)分頁(yè)效果

    這篇文章主要為大家詳細(xì)介紹了利用flask sqlalchemy實(shí)現(xiàn)分頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • python將txt文件讀取為字典的示例

    python將txt文件讀取為字典的示例

    今天小編就為大家分享一篇python將txt文件讀取為字典的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12

最新評(píng)論