日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

解决文件路径的问题的总结

發(fā)布時(shí)間:2023/12/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决文件路径的问题的总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

構(gòu)建路徑:
    os.path 模塊用來管理文件路徑問題,它中包含了很多用以構(gòu)建路徑的函數(shù),其中最常用的便是 join,abspath 以及 expanduser 函數(shù):

  • join:拼接路徑(不同的操作系統(tǒng)使用不同的分隔符拼接);

  • abspath:得到絕對(duì)路徑;

  • expanduser:展開用戶的 home 目錄。

具體的操作實(shí)例如下所示:

>>> import os >>> os.getcwd() '/root/rocky0429' >>> os.listdir() ['test.py', 'c.py', 'b.txt', 'a.txt'] >>> os.path.join('~','rocky0429','a.txt') '~/rocky0429/a.txt' >>> os.path.abspath('.') '/root/rocky0429' >>> os.path.abspath('..') '/root' >>> os.path.abspath('../rocky0429/b.txt') '/root/rocky0429/b.txt' >>> os.path.expanduser('~') '/root' >>> os.path.expanduser('~/rocky0429') '/root/rocky0429' >>> os.path.expanduser('~/rocky0429/c.py') '/root/rocky0429/c.py'

上述代碼中的 os.path 模塊中的 abspath 函數(shù)用來返回一個(gè)相對(duì)路徑的絕對(duì)路徑,那么相應(yīng)的,也會(huì)存在一個(gè)函數(shù) isabs 來檢查某路徑是否為絕對(duì)路徑:

>>> os.path.isabs('/root/rocky0429/test.py') True >>> os.path.isabs('~') False

當(dāng)然在寫代碼的時(shí)候,有時(shí)候需要導(dǎo)入當(dāng)前源文件所在目錄下的其他包,這個(gè)時(shí)候就需要獲取當(dāng)前源文件的父目錄,那么如何獲取呢?我們可以用 __file__ 這個(gè)變量來表示,具體操作如下所示:

# coding:utf-8 import ossource_file_path = os.path.abspath(__file__)print('Current working directory : {}'.format(os.getcwd())) print('Source file address : {}'.format(source_file_path))

輸入的結(jié)果如下所示:

Current working directory : /root/rocky0429 Source file address : /root/rocky0429/test.py

拆分路徑

?

我們使用 Python 可以很方便的構(gòu)建文件路徑,當(dāng)然也可以很舒服的對(duì)文件路徑進(jìn)行拆分,os.path 模塊在拆分路徑中常用的是 split/splitext,dirname 以及 basename 函數(shù):

?

  • split:返回一個(gè)二元組,包括文件的路徑和文件名;

  • splitext:也是返回一個(gè)二元組,包括擴(kuò)展名和去除擴(kuò)展名的部分;

  • dirname:返回文件所在路徑;

  • basename:返回文件名。

?

具體的操作實(shí)例如下所示:

>>> import os >>> source_file_path = '/root/rocky0429/test.py' >>> os.path.split(source_file_path) ('/root/rocky0429', 'test.py') >>> os.path.splitext(source_file_path) ('/root/rocky0429/test', '.py') >>> os.path.dirname(source_file_path) '/root/rocky0429' >>> os.path.basename(source_file_path) 'test.py'

判斷路徑是否存在

?

os.path 模塊也提供了一些函數(shù)來判斷某條路徑是否存在,還能判斷處在這個(gè)條路徑的文件的類型,常用的便是 exists,isfile 以及 isdir 函數(shù)(is 開頭是判斷類函數(shù),返回布爾類型結(jié)果):

?

  • exists:判斷某條路徑是否存在;

  • isfile:判斷路徑是否存在且為一個(gè)文件;

  • isdir:判斷路徑是否存在且為一個(gè)文件夾。

?看到這里你可能覺得上面說的都很簡單,可恰恰是簡單的東西疊加組合就能“變出”很多你想要的結(jié)果,如何去使用這里面有大學(xué)問。對(duì)于 os.path 模塊里的函數(shù),如果我們可以充分利用,也能夠?qū)崿F(xiàn)很多有用的功能,下面來看幾個(gè)例子:

1.獲取 /root/rocky0429 目錄下的所有文件

>>> import os >>> [file for file in os.listdir(os.path.expanduser('~/rocky0429')) if os.path.isfile(file)] ['test.py', 'c.py', 'b.txt', 'a.txt']

2.獲取 /root/rocky0429 目錄下的所以列表

>>> import os >>> [table for table in os.listdir(os.path.expanduser('~/rocky0429')) if os.path.isdir(table)] ['data', 'leey']

3.獲取 /root/rocky0429 目錄下所有目錄的絕對(duì)地址

>>> import os >>> {table: os.path.realpath(table) for table in os.listdir(os.path.expanduser('~/rocky0429')) if os.path.isdir(table)} {'data': '/root/rocky0429/data', 'leey': '/root/rocky0429/leey'}

?

轉(zhuǎn)載于:https://www.cnblogs.com/key01/p/10185713.html

總結(jié)

以上是生活随笔為你收集整理的解决文件路径的问题的总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。