中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Python怎么操作文件路徑名

發布時間:2021-05-21 17:30:17 來源:億速云 閱讀:160 作者:Leah 欄目:開發技術

本篇文章為大家展示了使用Python怎么操作文件路徑名,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

1 文件路徑名操作

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

2 os.path模塊

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

3 pathlib模塊

3.1 目錄操作

3.1.1 路徑拼接和分解

操作符"/"對路徑拼接

  “/”操作符可以對兩個Path對象進行拼接、字符串和Path對象或者Path對象和字符串進行拼接

parts屬性

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

joinpath

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

from pathlib import Path
p = Path()  # 返回當前目錄
p = Path('a', 'b', 'c/d')  # 當前目錄下的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) # 返回當前路徑的父目錄的父目錄即/a/b
 for x in p.parents:   # 將當前路徑的每一級的父目錄序列化
   print(x)

 3.1.4 其他屬性及方法

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

 和以上四個屬性相關的方法:

  •   with_suffix(suffix)補充擴展名到路徑尾部,返回新的路徑,擴展名存在則修改之

  •   with_name(name)替換目錄最后一個部分并返回一個新的路徑

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

和文件類型相關的方法:

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

其他幾種方法:

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

返回一個新的路徑,這個新路徑就是當前Path對象的絕對路徑。

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

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

touch(mode=0o666,

exist_ok=True)

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

mkdir(mode=0o777,

parents=False,

exists_ok=False)

parents參數是判斷是否創建父目錄,True等同于mkdir -p;

False時,父目錄不存在,則拋出FileNotFoundError

exist_ok參數,在3.5版本加入。False時,路徑存在,

拋出FileExistsError;True時,FileExistsError被忽略

iterdir()迭代當前目錄
p = Path()
p /= 'a/b/c/d'
p.exists()  # True

# 創建目錄
p.mkdir()  # 如果p對象的路徑存在拋出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的父目錄,此時真實目錄中已經不存在d目錄
p.parent.exists()  # False 'a/b/c'
p.mkdir()  # FileNotFoundError
p.mkdir(parent=True)  # 成功

 實現遍歷,并判斷文件類型,如果是目錄是否可以判斷其是否為空的代碼:

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)方法打開文件,其使用方法類似內建函數open,返回一個文件對象。Ptyhon3.5后pathlib模塊新增加了一些方法,如下所示:

方法功能
read_bytes()以‘rb'讀取路徑對應文件,并返回二進制流

read_text(encoding=None,

errors=None)

以'rt'方式讀取路徑對應文件,返回文本
Path.write_bytes(data)以'wb'方式寫入數據到路徑對應文件

write_text(data, encoding=None,

errors=None)

以'wt'方式寫入字符串到路徑對應文件
p = Path("my_binary_file")
p.write_bytes(b'Binary file contents')  # 以'wb'形式向p路徑對象寫入數據
p.read_bytes()

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

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

python是什么意思

Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向對象的腳本語言,其最初的設計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發獨立的項目和大型項目。

上述內容就是使用Python怎么操作文件路徑名,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盈江县| 巴彦淖尔市| 德令哈市| 延寿县| 苏州市| 望江县| 军事| 邹城市| 九台市| 衡南县| 宝鸡市| 建昌县| 湘潭市| 沅江市| 黄陵县| 九龙城区| 崇明县| 老河口市| 渝中区| 广安市| 万山特区| 阿瓦提县| 布尔津县| 东光县| 体育| 离岛区| 秭归县| 桐城市| 游戏| 嘉鱼县| 太仓市| 昌都县| 南充市| 舒兰市| 佛教| 武义县| 拉萨市| 虞城县| 嘉禾县| 瑞丽市| 凤城市|