华南俳烁实业有限公司

python

當前位置:中華考試網(wǎng) >> python >> python編程基礎(chǔ) >> 文章內(nèi)容

python如何遍歷文件夾

來源:中華考試網(wǎng)  [2020年10月31日]  【

  python下遍歷某個路徑所有文件是很常用的事,一直對其有所困擾,那么python如何遍歷文件夾呢?一起來了解下吧:

  python如何遍歷文件夾

  方法一 : 利用函數(shù) os.walk()

  os.walk() 會返回三元元組 (dirpath, dirnames, filenames)

  dirpath : 根路徑 (字符串)

  dirnames : 路徑下的所有目錄名 (列表)

  filenames : 路徑下的所有非目錄文件名 (列表)

  其中目錄名和文件名都是沒有加上根路徑的,所以需要完整路徑時需要將目錄名或文件名與根路徑連接起來。

  示例 :

  import os

  root = "C:\\dir"

  for dirpath, dirnames, filenames in os.walk(root):

  for filepath in filenames:

  print os.path.join(dirpath, filepath)

  方法二 : 利用函數(shù) os.listdir(), os.path.isdir(), os.path.isfile()

  os.listdir() 可以列出路徑下所有文件和目錄名,但是不包括當前目錄., 上級目錄.. 以及子目錄下的文件.

  os.path.isfile() 和 os.path.isdir() 判斷當前路徑是否為文件或目錄

  示例 :

  import os

  def listDir(rootDir):

  for filename in os.listdir(rootDir):

  pathname = os.path.join(rootDir, filename)

  if (os.path.isfile(filename)):

  print pathname

  else:

  listDir(pathname)

  python如何實現(xiàn)文件夾遍歷

  python 中os.path模塊用于操作文件或文件夾

  os.path.exists(path) 判斷文件路徑是否存在

  dir = "c:\windows"

  if os.path.exists(dir) :

  print "dir exists"

  else :

  print "no exists"

  os.path.isfile(path) 判斷path是否是文件

  dir = "c:\windows\system32\cmd.exe"

  if os.path.isfile(dir) :

  print "file exists"

  else :

  print "no exists"

  os.path.getsize(path) 獲取path文件的大小

  size = os.path.getsize(dir)

  print size/1024

  os.path.walk(path) 遍歷path,返回一個三元組(dirpath, dirnames, filenames). dirpath表示遍歷到的路徑, dirnames表示該路徑下的子目錄名,是一個列表, filesnames表示該路徑下的文件名,也是一個列表. 例如: 當遍歷到c:\windows時,dirpath="c:\windows", dirnames是這個路徑下所有子目錄名的列表,filenames是這個路徑下所有文件名的列表

  for (root, dirs, files) in os.walk("C:\windows"): 列出windows目錄下的所有文件和文件名

  for filename in files:

  print os.path.join(root,filename)

  for dirc in dirs:

  print os.path.join(root,dirc)

  問題 1 獲取給定文件夾的大小?

  要遍歷文件的大小,只需要遍歷文件內(nèi)的所有文件,然后將所有文件夾的大小加起來

  def getDirSzie(dir) :

  for (root,dirs,files) in os.walk(dir,False) :

  Size = 0

  for filename in files :

  Size += os.path.getsize(os.path.join(root,filename))

  print root,Size/1024

  問題 2 遍歷一個文件夾的子目錄,不遍歷子目錄的字目錄?

  os.listdir(path) 函數(shù)列出指定目錄下的文件和文件夾

  dir = 'c:/windows'

  if os.path.exists(dir):

  dirs = os.listdir(dir)

  for dirc in dirs:

  print dirc

  else :

  print "dir not exists"

  問題3 刪除指定目錄下空的目錄

  for (root, dirs, files) in os.walk(path) :

  for item in dirs :

  dir = os.path.join(root, item)

  try :

  print dir

  os.rmdir(dir)

  except :

  pass

  問題4 修改指定目錄下所有文件的文件后綴

python課程免費試聽預(yù)約

  • 地區(qū):
  • 姓名:
  • 手機:

  for (root,dirs,files) in os.walk(path) :

  for item in files :

  d = os.path.join(root, item)

  name = d + ".eml"

  os.rename(d, name)

  python怎樣遍歷文件夾

  一、os.walk()

  os.walk(top, topdown=True, onerror=None, followlinks=False)

  可以得到一個三元tupple(dirpath, dirnames, filenames),

  第一個為起始路徑,第二個為起始路徑下的文件夾,第三個是起始路徑下的文件。

  dirpath 是一個string,代表目錄的路徑,

  dirnames 是一個list,包含了dirpath下所有子目錄的名字。

  filenames 是一個list,包含了非目錄文件的名字。

  這些名字不包含路徑信息,如果需要得到全路徑,需要使用os.path.join(dirpath, name)

  二、枚舉文件夾下所有文件

  import os

  # 枚舉dirPath目錄下的所有文件

  def main(dirname):

  # begin

  for root, dirs, files in os.walk(dirname):

  print(root)

  print(dirs)

  print(files)

  for dir in dirs:

  print(os.path.join(root, dir))

  for file in files:

  print(os.path.join(root, file))

  print('----------------')

  if __name__ == '__main__':

  main(r'G:\ftp\home\bigberg')

  三、遍歷文件夾獲取大小

  def get_used_size(dirname):

  """

  遍歷文件夾獲取文件大小

  """

  size = 0

  for dir_path, dirs, files in os.walk(dirname):

  # size += sum([os.path.getsize(os.sep.join([dir_path, name])) for name in files])

  for name in files:

  size += os.path.getsize(os.sep.join([dir_path, name]))

  return size

  Python如何循環(huán)遍歷文件

  python中打開文件需要使用內(nèi)置函數(shù)open

  格式:

  open(name[,mode[,buffering]])

  啟動mode和buffering 是可選的,默認情況下mode是r

  mode:

  r:以讀方式打開

  w:以寫方式打開 (文件不存在會創(chuàng)建,存在的話,會清空文件,很危險)

  a:以追加的方式打開

  r+:以讀寫模式打開

  w+:以讀寫模式打開

  a+:以讀寫模式打開

  rb:以二進制讀模式打開(特殊文件需要用文本模式傳輸?shù)脑,建議使用b)

  wb:以二進制寫模式打開

  ab:以二進制追加模式打開

  方法:

  fd = open('/tmp/test.txt','r')

  以讀模式打開,可以利用一個變量去接收,注意這個變量是一個文件對象

  fd.close()

  關(guān)閉打開的文件,(修改等操作,只有關(guān)閉了文件,才會生效)

  fd.write("123")

  寫入(需要寫模式),注意寫入的內(nèi)容必須是一個字符串。

  fd.read(int)

  一次性讀取文件所有內(nèi)容,那么再次執(zhí)行read()方法的時候,指針在末尾,所以就為空了。如果指定了int,那么就只讀取int個字符

  fd.readline()

  一行一行讀取,返回字符串,當指針到文件默認,返回空

  fd.readlines()

  一次讀取所有行,并把每一個行當成一個元素,存儲在序列中(如果文件很大,那么非常占內(nèi)存)

  fd.next()

  第一讀取一行,知道行尾,到行尾的時候會報錯

責編:fushihao
  • 會計考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學歷考試
莱州市| 武义县| 绥江县| 济宁市| 光泽县| 墨江| 衡阳县| 崇仁县| 二手房| 石棉县| 安国市| 阳信县| 八宿县| 肇州县| 南充市| 淮北市| 昌宁县| 江源县| 旌德县| 噶尔县| 盐池县| 高邮市| 东至县| 双流县| 保靖县| 周口市| 嫩江县| 五台县| 曲阳县| 积石山| 西昌市| 石城县| 盐城市| 宽甸| 清新县| 孟津县| 西城区| 丹阳市| 靖西县| 白城市| 淮北市|