最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一篇文章搞定Python操作文件與目錄

 更新時(shí)間:2019年08月13日 10:24:13   作者:xxq2dream  
這篇文章主要給大家介紹了關(guān)于如何通過(guò)一篇文章搞定Python操作文件與目錄的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

文件和目錄操作是很常見(jiàn)的功能,這里做個(gè)簡(jiǎn)單的總結(jié),包括注意事項(xiàng)和實(shí)際的實(shí)現(xiàn)代碼,基本日常開(kāi)發(fā)都?jí)蛴昧?br />

目錄操作

判斷目錄或是文件是否存在

os.path.exists(path)

判斷是否是文件或是目錄

# 如果文件或是目錄不存在也會(huì)返回False
os.path.isfile(path)
os.path.isdir(path)

創(chuàng)建/刪除目錄

os.mkdir(path)
os.rmdir(path)

得到當(dāng)前的目錄名稱

os.path.split(dir_path)[1]

這個(gè)方法既簡(jiǎn)單又實(shí)用,比如我們輸入一個(gè)目錄路徑:

os.path.split('/usr/projects/project1')[1]
# 輸出
project1

# 實(shí)際上,上面的代碼是分了2步走:
# 第1步:利用os.path.split方法分割路徑
os.path.split('/usr/projects/project1')
# 輸出
('/usr/projects', 'project1')
# 然后第2步取出第2個(gè)結(jié)果,也就是當(dāng)前的目錄名字

循環(huán)遍歷目錄

循環(huán)遍歷目錄有2種方式,一種是常規(guī)的遞歸方法,類似下面這樣:

def list_file(path):
 for file in os.listdir(path):
  if os.path.isdir(os.path.join(path, file)):
   list_file(os.path.join(path, file))
  print(file)

還有一種更好的方式就是用os.walk方法,類似下面這樣:

def list_file_by_walk(dir_path):
 for home, dirs, files in os.walk(dir_path):
  print(home)
  print(dirs)
  # files中是文件列表
  for file_name in files:
   print(file_name)

os.walk方法的幾個(gè)參數(shù)簡(jiǎn)單介紹一下:

  • home:這個(gè)是當(dāng)前遍歷的目錄,比如說(shuō)是 /usr/projects/
  • dirs:是這個(gè)目錄(home目錄)下面的所有文件夾(也就是子目錄)
  • files:是這個(gè)目錄(home目錄)下所有的文件

所以從上面的參數(shù)中可以看出,os.walk方法會(huì)逐一地遍歷初始目錄下面的所有目錄和文件

常見(jiàn)的文件操作

跟上面得到目錄名類似的是得到文件的后綴

os.path.splitext(file_path)

這個(gè)方法如果輸入的是文件的路徑,比如:

a = '/usr/projects/project1/test.txt'
os.path.splitext(a)
# 輸出
('/usr/projects/project1/test', '.txt')
# 所以跟上面類似,我們可以直接拿到文件的后綴
os.path.splitext(a)[1]

文件的全路徑

# 需要文件的目錄路徑和文件名
os.path.join(dir_name, file_name)

這個(gè)方法也很有用,因?yàn)槲覀冊(cè)诖蜷_(kāi)一個(gè)文件的時(shí)候都需要知道文件的路徑

比如在上面循環(huán)遍歷目錄的例子中,我們可以這樣打開(kāi)編輯文件:

def list_file_by_walk(dir_path):
  for home, dirs, files in os.walk(dir_path):
    print(home)
    print(dirs)
    # files中是文件列表
    for file_name in files:
      # 這個(gè)file_name只是一個(gè)文件名
      print(file_name)
      # 如果我們需要打開(kāi)文件進(jìn)行編輯讀寫(xiě)操作,那就需要文件的路徑
      # 用os.path.join方法就可以快速得到文件路徑
      file_path = os.path.join(home, file_name)

需要注意的是,不要直接用字符串相加的方式來(lái)拼接,這樣子會(huì)有兼容問(wèn)題,比如windows上可能路徑就是錯(cuò)的了

讀寫(xiě)文件

打開(kāi)文件

with open(file, 'r') as f:
  for line in f.readlines():
    print line

大家只要記住上面打開(kāi)文件的格式就行了,也就是這句:

with open(file_path, 打開(kāi)的模式) as f
# 我們就拿到了文件對(duì)象f,可以對(duì)文件進(jìn)行操作了,比如讀寫(xiě)等

原因是文件讀寫(xiě)是IO操作,需要及時(shí)關(guān)閉打開(kāi)的文件,上述with open() as f的方式會(huì)自動(dòng)幫你關(guān)閉文件的,免得自己忘記關(guān)

文件的打開(kāi)模式

文件的打開(kāi)模式有很多種,比如只讀、只寫(xiě)、追加模式等等,具體可以見(jiàn)下圖:


文件讀寫(xiě)模式--來(lái)源于網(wǎng)絡(luò)

模式有這么多,掌握常見(jiàn)的幾種就可以了,其他的等用到了再去了解。需要注意以下幾點(diǎn):

創(chuàng)建文件,只需要打開(kāi)一個(gè)文件即可:

# 只要這樣一句就創(chuàng)建了一個(gè)新文件,也就是打開(kāi)以后關(guān)閉文件
with open(new_file, 'w') as f:

需要特別注意的是,以w只寫(xiě)模式打開(kāi)一個(gè)文件后會(huì)把原文件的內(nèi)容清除!所以如果在遍歷文件的時(shí)候,你想同時(shí)修改文件就不能簡(jiǎn)單的以w只寫(xiě)模式打開(kāi)了。

在遍歷文件的時(shí)候想同時(shí)修改文件怎么辦呢?注意這里說(shuō)的是修改,比如修改某一行。

修改文件的某一部分

這里舉例在遍歷文件的時(shí)候想修改文件,比如以上面遍歷目錄文件的例子:

def list_file_by_walk(dir_path):
  for home, dirs, files in os.walk(dir_path):
    print(home)
    print(dirs)
    # files中是文件列表
    for file_name in files:
      # 這個(gè)file_name只是一個(gè)文件名
      print(file_name)
      # 如果我們需要打開(kāi)文件進(jìn)行編輯讀寫(xiě)操作,那就需要文件的路徑
      # 用os.path.join方法就可以快速得到文件路徑
      file_path = os.path.join(home, file_name)
      
      # 這個(gè)時(shí)候我想修改這個(gè)文件的內(nèi)容,要怎么做呢?

需要注意的是,讀寫(xiě)模式需要管理文件指針,比較麻煩,寫(xiě)讀模式,則會(huì)把原先的內(nèi)容都清除,所以都不適合

一種思路是我先以只讀模式打開(kāi),然后遍歷文件的內(nèi)容保存起來(lái),比如:

with open(file, 'r') as f:
  for line in f.readlines():
    print line
    # 這里就可以把文件的內(nèi)容一行行保存起來(lái)
    # 找到需要修改的行,修改以后保存

保存以后再以只讀模式打開(kāi)文件,寫(xiě)入即可。

另一種思路是我打開(kāi)原文件的同時(shí),再打開(kāi)另一個(gè)臨時(shí)文件用于寫(xiě)入,比如這樣:

with open(file, 'r') as f, open(cache_file_path, 'w') as w:
  for line in f.readlines():
    # 中間可以對(duì)f文件中的內(nèi)容進(jìn)行過(guò)濾或是修改
    w.write(line)

# 完了以后需要?jiǎng)h除原文件,然后把臨時(shí)文件的名字修改成原來(lái)文件的名字即可

這里就順道引出了,刪除和重命名文件的方法

os.remove(file)
os.rename(cache_file_path, file)

總結(jié)

以上就是Python文件和目錄操作的常用知識(shí)點(diǎn)和方法總結(jié),建議大家收藏起來(lái),以后方便隨時(shí)查看。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 利用OpenCV判斷是否加載圖片的兩種方法

    利用OpenCV判斷是否加載圖片的兩種方法

    這篇文章主要介紹了利用OpenCV判斷是否加載圖片的兩種方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python字符串及文本模式方法詳解

    Python字符串及文本模式方法詳解

    這篇文章主要介紹了Python字符串及文本模式方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python學(xué)習(xí)小技巧之列表項(xiàng)的排序

    Python學(xué)習(xí)小技巧之列表項(xiàng)的排序

    這篇文章主要給大家介紹了Python學(xué)習(xí)小技巧之列表項(xiàng)排序的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友們可以參借鑒,下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-05-05
  • mat矩陣和npy矩陣實(shí)現(xiàn)互相轉(zhuǎn)換(python和matlab)

    mat矩陣和npy矩陣實(shí)現(xiàn)互相轉(zhuǎn)換(python和matlab)

    這篇文章主要介紹了mat矩陣和npy矩陣實(shí)現(xiàn)互相轉(zhuǎn)換(python和matlab),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Python將博客內(nèi)容html導(dǎo)出為Markdown格式

    Python將博客內(nèi)容html導(dǎo)出為Markdown格式

    Python將博客內(nèi)容html導(dǎo)出為Markdown格式,通過(guò)博客url地址抓取文章,分析并提取出文章標(biāo)題和內(nèi)容,將內(nèi)容構(gòu)建成html,再轉(zhuǎn)換為Markdown文件
    2025-04-04
  • python配置grpc環(huán)境

    python配置grpc環(huán)境

    gRPC 是一款高性能、開(kāi)源的 RPC 框架,產(chǎn)自 Google,基于 ProtoBuf 序列化協(xié)議進(jìn)行開(kāi)發(fā),支持多種語(yǔ)言(Golang、Python、Java等),本篇只介紹 Python 的 gRPC 安裝使用
    2019-01-01
  • 關(guān)于WARNING:Ignoring?invalid?distribution?-pencv-python....警告信息的處理方法(已解決!)

    關(guān)于WARNING:Ignoring?invalid?distribution?-pencv-python....

    這篇文章主要給大家介紹了關(guān)于WARNING:Ignoring?invalid?distribution?-pencv-python....警告信息的處理方法,文中通過(guò)圖文將解決的辦法介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-03-03
  • python selenium禁止加載某些請(qǐng)求的實(shí)現(xiàn)

    python selenium禁止加載某些請(qǐng)求的實(shí)現(xiàn)

    本文主要介紹了python selenium禁止加載某些請(qǐng)求的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Python字典生成式、集合生成式、生成器用法實(shí)例分析

    Python字典生成式、集合生成式、生成器用法實(shí)例分析

    這篇文章主要介紹了Python字典生成式、集合生成式、生成器用法,結(jié)合實(shí)例形式分析了Python字典生成式、集合生成式、生成器相關(guān)原理、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • PyTorch快速搭建神經(jīng)網(wǎng)絡(luò)及其保存提取方法詳解

    PyTorch快速搭建神經(jīng)網(wǎng)絡(luò)及其保存提取方法詳解

    本篇文章主要介紹了PyTorch快速搭建神經(jīng)網(wǎng)絡(luò)及其保存提取方法詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04

最新評(píng)論

平舆县| 襄樊市| 会同县| 宁化县| 五莲县| 虞城县| 盐边县| 阜宁县| 延庆县| 尖扎县| 嘉善县| 凤翔县| 交城县| 巫山县| 定日县| 北辰区| 阳谷县| 渭南市| 大荔县| 康定县| 尼木县| 安达市| 荥阳市| 黄冈市| 徐水县| 枞阳县| 资兴市| 司法| 青铜峡市| 县级市| 哈巴河县| 綦江县| 徐水县| 阳西县| 夏邑县| 黑龙江省| 青铜峡市| 文安县| 玉环县| 剑河县| 镇江市|