python os.scandir文件操作

scandir方法返回了一個DirEntry迭代器對象,它非常輕巧方便,並且能告訴你迭代文件的路徑。之前案例中,我們檢查了entry是一個文件或者是一個文件夾,與此同時,我們添加它的路徑到列表中。

在 Python 3.5版本中,新添加了 os.scandir()方法,它是一個目錄迭代方法。os.scandir() 的運行效率要比 os.walk 高。在 PEP 471 中,Python 官方也推薦我們使用 os.scandir() 來遍歷目錄。

具有以下屬性和方法:

  • name: 條目的文件名,相對於 scandir path 參數( 對應於 os.listdir的返回值)
  • path: 輸入路徑 NAME ( 不一定是絕對路徑) --與 os.path.join(scandir_path, entry.name)
  • is_dir(*, follow_symlinks=True): 類似於 pathlib.Path.is_dir(),但返回值在 DirEntry 對象上是緩存;大多數情況下不需要系統調用;如果 follow_symlinks 是 false,則不要跟隨符號鏈接。
  • is_file(*, follow_symlinks=True): 類似於 pathlib.Path.is_file(),但返回值在 DirEntry 對象上是緩存;大多數情況下不需要系統調用;如果 follow_symlinks 是 false,則不要跟隨符號鏈接。
  • is_symlink(): 類似 pathlib.Path.is_symlink(),但返回值緩存在 DirEntry 對象上;大多數情況下不需要系統調用
  • stat(*, follow_symlinks=True): 類似 os.stat(),但返回值緩存在 DirEntry 對象上;不需要對 Windows (。除了符號符號外) 進行系統調用;如果 follow_symlinks 是 false,則不跟隨符號鏈接( 像 os.lstat() )。
  • inode(): 返回項的節點數;返回值在 DirEntry 對象上緩存
import os
import shutil
 
data_path='D:/oanda/'   
target_path='D:/data/'
with os.scandir(data_path) as it:
    for entry in it:
        if not entry.name.startswith('.') and entry.is_file():
            file_name=entry.name
            pair='__'.join(file_name.split('__')[:2])
            shutil.move(data_path+file_name,target_path+pair+'/'+file_name) 
            print(file_name)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章