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

Python文件路徑名的操作方法

 更新時(shí)間:2019年10月30日 10:36:32   作者:Dabric  
對(duì)于文件路徑名的操作在編程中是必不可少的,比如說,有時(shí)候要列舉一個(gè)路徑下的文件,那么首先就要獲取一個(gè)路徑,再就是路徑名的一個(gè)拼接問題,通過字符串的拼接就可以得到一個(gè)路徑名。這篇文章主要介紹了Python中文件路徑名的操作,需要的朋友可以參考下

1 文件路徑名操作

  對(duì)于文件路徑名的操作在編程中是必不可少的,比如說,有時(shí)候要列舉一個(gè)路徑下的文件,那么首先就要獲取一個(gè)路徑,再就是路徑名的一個(gè)拼接問題,通過字符串的拼接就可以得到一個(gè)路徑名。Python中3.4版本前使用os.path模塊中的函數(shù)來操作路徑名;3.4版本開始提供pathlib模塊,使用Path對(duì)象來對(duì)目錄和文件進(jìn)行操作。

2 os.path模塊

from os import path
p = path.join('/etc', 'sysconfig', 'network')  # 根據(jù)不同的系統(tǒng),將每個(gè)字符串組合成路徑形式
print(type(p), p)
print(path.exists(p))  # 判斷路徑在當(dāng)前系統(tǒng)中是否存在
print(path.split(p))  # (head, tail)將路徑中的最后一個(gè)目錄或者文件與前面的路徑分開
print(path.abspath('.'))  # 返回當(dāng)前工作路徑,'.'代表當(dāng)前路徑
p = path.join('o:/', p, 'test.txt')
print(path.dirname(p))  # 取目錄名
print(path.basename(p))  # 取基名
print(path.splitdrive(p))  # 將盤符名和文件路徑名分開(對(duì)于windows有盤符之分,在Linux中沒有盤符)
p1 = path.abspath(__file__)  # 取當(dāng)前文件所在的路徑
print(p1, path.basename(p1))
while p1 != path.dirname(p1):  # 每次取上級(jí)目錄中的基名
  p1 = path.dirname(p1)
  print(p1, path.basename(p1))

3 pathlib模塊

3.1 目錄操作

3.1.1 路徑拼接和分解

操作符"/"對(duì)路徑拼接

  “/”操作符可以對(duì)兩個(gè)Path對(duì)象進(jìn)行拼接、字符串和Path對(duì)象或者Path對(duì)象和字符串進(jìn)行拼接

parts屬性

  parts屬性,可以返回路徑中的每一個(gè)部分

joinpath

  joinpath(*other)連接多個(gè)字符串到Path對(duì)象中

from pathlib import Path
p = Path()  # 返回當(dāng)前目錄
p = Path('a', 'b', 'c/d')  # 當(dāng)前目錄下的a/b/c/d
p = Path('/etc')  # 返回根下的etc目錄
p = Path()
p = p / 'a'
p1 = 'b' / p
p2 = Path('c')
p3 = p2 / p1
print(p3.parts)
p3.joinpath('etc', 'init.d', Path('httpd'))

3.1.2 獲取路徑

  • str獲取路徑字符串
  • bytes獲取路徑字符串的bytes
 p = Path('/etc')
print(str(p), bytes(p))

3.1.3 獲取路徑中的父目錄

  • parent屬性返回目錄的邏輯父目錄
  • parents屬性返回父目錄序列,索引0是直接的父目錄
p = Path('/a/b/c/d')
 print(p.parent.parent) # 返回當(dāng)前路徑的父目錄的父目錄即/a/b
 for x in p.parents:   # 將當(dāng)前路徑的每一級(jí)的父目錄序列化
   print(x)

 3.1.4 其他屬性及方法

屬性 含義
name 目錄的最后一個(gè)部分
stem  目錄最后一個(gè)部分,不包含后綴
suffix 目錄中最后一個(gè)部分的擴(kuò)展名
suffixes 返回多個(gè)擴(kuò)展名列表

 和以上四個(gè)屬性相關(guān)的方法:

  •   with_suffix(suffix)補(bǔ)充擴(kuò)展名到路徑尾部,返回新的路徑,擴(kuò)展名存在則修改之
  •   with_name(name)替換目錄最后一個(gè)部分并返回一個(gè)新的路徑
p = Path('/viktor/mysqlinstall/mysql.tar.gz')
print(p.name)  # mysql.tar.gz
print(p.suffix)  # .gz
print(p.suffixes)  # ['.tar', '.gz']
print(p.stem)  # mysql.tar
print(p.with_name('mysql-5.tgz'))  # /viktor/mysqlinstall/mysql-5.tgz
p = Path('README')
print(p.with_suffix('.txt'))  # README.txt

和文件類型相關(guān)的方法:

方法 功能
is_dir() 是否是目錄,目錄存在返回True
is_file() 是否是普通文件,文件存在返回True
is_symlink() 是否軟鏈接
is_socket() 是否是socket文件
is_block_device() 是否是塊設(shè)備
is_char_device() 是否是字符設(shè)備
is_absolute() 是否是絕對(duì)路徑

其他幾種方法:

方法 功能
cwd() 返回當(dāng)前工作目錄
home() 返回當(dāng)前家目錄
resolve() 

返回一個(gè)新的路徑,這個(gè)新路徑就是當(dāng)前Path對(duì)象的絕對(duì)路徑。

如果是軟鏈接則直接被解析

absolute() 也可以獲取絕對(duì)路徑,但是推薦使用resolve()
exists() 判斷目錄或文件是否存在
rmdir() 刪除空目錄。沒有提供判斷目錄為空的方法

touch(mode=0o666,

exist_ok=True)

創(chuàng)建一個(gè)文件
as_url() 將路徑返回成URL,例如'file:///etc/passwd'

mkdir(mode=0o777,

parents=False,

exists_ok=False)

parents參數(shù)是判斷是否創(chuàng)建父目錄,True等同于mkdir -p;

False時(shí),父目錄不存在,則拋出FileNotFoundError

exist_ok參數(shù),在3.5版本加入。False時(shí),路徑存在,

拋出FileExistsError;True時(shí),F(xiàn)ileExistsError被忽略

iterdir() 迭代當(dāng)前目錄

p = Path()
p /= 'a/b/c/d'
p.exists()  # True

# 創(chuàng)建目錄
p.mkdir()  # 如果p對(duì)象的路徑存在拋出FileExistsError,否則拋出FileNotFoundError
p.mkdir(parents=True)  
p.exists()  # True
p.mkdir(parents=Ture)  # 拋出FileExistsError
p.mkdir(parents=True, exist_ok=True)  # 忽略FileExistsError
p /= 'readme.txt'
p.parent.rmdir()  # 刪除readme.txt的父目錄,此時(shí)真實(shí)目錄中已經(jīng)不存在d目錄
p.parent.exists()  # False 'a/b/c'
p.mkdir()  # FileNotFoundError
p.mkdir(parent=True)  # 成功

 實(shí)現(xiàn)遍歷,并判斷文件類型,如果是目錄是否可以判斷其是否為空的代碼:

for x in p.parents[len(p.parents)-1].iterdir():
  print(x, end='\t')
  if x.is_dir():
    flag = False
    for _ in x.iterdir():
      flag = True
      break
    print('dir','Not Empty' if flag else 'Empty', sep='\t')
  elif x.is_file():
    print('file')
  else:
    print('other file')

3.2 文件操作

  pathlib中的Path還提供open(mode='r', buffering=-1, encoding=None, errors=None, newline=None)方法打開文件,其使用方法類似內(nèi)建函數(shù)open,返回一個(gè)文件對(duì)象。Ptyhon3.5后pathlib模塊新增加了一些方法,如下所示:

方法 功能
read_bytes() 以‘rb'讀取路徑對(duì)應(yīng)文件,并返回二進(jìn)制流

read_text(encoding=None,

errors=None)

以'rt'方式讀取路徑對(duì)應(yīng)文件,返回文本
Path.write_bytes(data) 以'wb'方式寫入數(shù)據(jù)到路徑對(duì)應(yīng)文件

write_text(data, encoding=None,

errors=None)

以'wt'方式寫入字符串到路徑對(duì)應(yīng)文件

p = Path("my_binary_file")
p.write_bytes(b'Binary file contents')  # 以'wb'形式向p路徑對(duì)象寫入數(shù)據(jù)
p.read_bytes()

p = Path("my_text_file")
p.write_text('Text file contents')  # 以'wt'形式向p路徑對(duì)象寫入數(shù)據(jù)
p.read_text()

with p.open() as f:
  print(f.read(5))

總結(jié)

以上所述是小編給大家介紹的Python文件路徑名的操作方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • python中opencv K均值聚類的實(shí)現(xiàn)示例

    python中opencv K均值聚類的實(shí)現(xiàn)示例

    本文主要介紹了python中opencv K均值聚類的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python腳本制作天氣查詢實(shí)例代碼

    Python腳本制作天氣查詢實(shí)例代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于Python腳本制作天氣查詢實(shí)例代碼實(shí)例,有興趣的朋友們可以參考學(xué)習(xí)下。
    2021-08-08
  • np.random.seed() 的使用詳解

    np.random.seed() 的使用詳解

    這篇文章主要介紹了np.random.seed() 的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 19個(gè)Python?Sklearn中超實(shí)用的隱藏功能分享

    19個(gè)Python?Sklearn中超實(shí)用的隱藏功能分享

    今天跟大家介紹?19?個(gè)?Sklearn?中超級(jí)實(shí)用的隱藏的功能,這些功能雖然不常見,但非常實(shí)用,它們可以直接優(yōu)雅地替代手動(dòng)執(zhí)行的常見操作
    2022-07-07
  • pandas求兩個(gè)表格不相交的集合方法

    pandas求兩個(gè)表格不相交的集合方法

    今天小編就為大家分享一篇pandas求兩個(gè)表格不相交的集合方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python執(zhí)行外部程序的常用方法小結(jié)

    python執(zhí)行外部程序的常用方法小結(jié)

    這篇文章主要介紹了python執(zhí)行外部程序的常用方法,實(shí)例總結(jié)了Python使用os模塊及commands模塊執(zhí)行外部程序的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-03-03
  • python selenium firefox使用詳解

    python selenium firefox使用詳解

    這篇文章主要介紹了python selenium firefox使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • python獲取時(shí)間及時(shí)間格式轉(zhuǎn)換問題實(shí)例代碼詳解

    python獲取時(shí)間及時(shí)間格式轉(zhuǎn)換問題實(shí)例代碼詳解

    這篇文章主要介紹了python獲取時(shí)間及時(shí)間格式轉(zhuǎn)換,需要的朋友可以參考下
    2018-12-12
  • Python?字符串使用多個(gè)分隔符分割成列表的2種方法

    Python?字符串使用多個(gè)分隔符分割成列表的2種方法

    本文主要介紹了Python?字符串使用多個(gè)分隔符分割成列表,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 編寫Python CGI腳本的教程

    編寫Python CGI腳本的教程

    這篇文章主要介紹了編寫Python CGI腳本的教程,CGI是Python和服務(wù)器軟件連接的接口,需要的朋友可以參考下
    2015-06-06

最新評(píng)論