无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【Python】文件操作用pathlib比os更簡(jiǎn)潔

2023-08-31 05:21 作者:PiKaChu345  | 我要投稿

本視頻闡述的主要內(nèi)容是,當(dāng)我們使用python操作文件的時(shí)候,使用pathlib模塊比使用os模塊更簡(jiǎn)潔。

視頻用五種不同情景下的代碼做了一個(gè)對(duì)比。

文中出現(xiàn)的所有代碼:

  • 刪除目錄下所有文件(包含子文件):
from pathlib import Path

def delete_all_contents_in_directory(src_dir):
    # First, delete all files and symlinks
    for entry in Path(src_dir).rglob('*'):
        if entry.is_file() or entry.is_symlink():
            entry.unlink()

    # Then, delete all directories
    for entry in Path(src_dir).rglob('*'):
        if entry.is_dir():
            try:
                entry.rmdir()
            except OSError:
                pass

if __name__ == "__main__":
    source_directory = 'my_dir'
    delete_all_contents_in_directory(source_directory)
  • 刪除一個(gè)目錄當(dāng)中所有文件(不包含子目錄)
from pathlib import Path

def delete_top_level_contents(src_dir):
    for entry in Path(src_dir).iterdir():
        if entry.is_file() or entry.is_symlink():
            entry.unlink()

if __name__ == "__main__":
    source_directory = 'my_dir'
    delete_top_level_contents(source_directory)

os的版本

import os

def delete_top_level_contents(src_dir):
    for entry_name in os.listdir(src_dir):
        entry_path = os.path.join(src_dir, entry_name)
        if os.path.isfile(entry_path) or os.path.islink(entry_path):
            os.remove(entry_path)

if __name__ == "__main__":
    source_directory = 'my_dir'
    delete_top_level_contents(source_directory)


  • 刪除目錄下指定格式的文件(不包含子目錄)

os的版本

import os

def delete_specific_formats_with_os(src_dir, extensions):
    for entry_name in os.listdir(src_dir):
        entry_path = os.path.join(src_dir, entry_name)
        if os.path.isfile(entry_path) and os.path.splitext(entry_name)[1] in extensions:
            os.remove(entry_path)

if __name__ == "__main__":
    source_directory = 'my_dir'
    formats_to_delete = ['.txt', '.log']
    delete_specific_formats_with_os(source_directory, formats_to_delete)

pathlib的版本

from pathlib import Path

def delete_specific_formats_with_pathlib(src_dir, extensions):
    for entry in Path(src_dir).iterdir():
        if entry.is_file() and entry.suffix in extensions:
            entry.unlink()
if __name__ == "__main__":
    source_directory = 'my_dir'
    formats_to_delete = ['.txt', '.log']
    delete_specific_formats_with_pathlib(source_directory, formats_to_delete)
  • 刪除給定目錄下文件名當(dāng)中包含特定關(guān)鍵詞以及特定擴(kuò)展名的文件(不包含子文件)
import os

def delete_files_with_keywords_with_os(src_dir, extensions, keywords):
    for entry_name in os.listdir(src_dir):
        entry_path = os.path.join(src_dir, entry_name)
        if os.path.isfile(entry_path) and os.path.splitext(entry_name)[1] in extensions:
            if any(keyword in entry_name for keyword in keywords):
                os.remove(entry_path)

if __name__ == "__main__":
    source_directory = 'my_dir'
    formats_to_delete = ['.txt', '.log']
    keywords_to_search = ['report', 'draft']
    delete_files_with_keywords_with_os(source_directory, formats_to_delete, keywords_to_search)

pathlib版本

from pathlib import Path

def delete_files_with_keywords_with_pathlib(src_dir, extensions, keywords):
    for entry in Path(src_dir).iterdir():
        if entry.is_file() and entry.suffix in extensions:
            if any(keyword in entry.name for keyword in keywords):
                entry.unlink()

if __name__ == "__main__":
    source_directory = 'my_dir'
    formats_to_delete = ['.txt', '.log']
    keywords_to_search = ['report', 'draft']
    delete_files_with_keywords_with_pathlib(source_directory, formats_to_delete, keywords_to_search)


  • 刪除一個(gè)目錄中名字符合某種pattern的文件(不包含子目錄)


import os
import re

def delete_files_with_pattern_with_os(src_dir, pattern):
    for entry_name in os.listdir(src_dir):
        entry_path = os.path.join(src_dir, entry_name)
        if os.path.isfile(entry_path) and re.match(pattern, entry_name):
            os.remove(entry_path)

if __name__ == "__main__":
    source_directory = 'my_dir'
    pattern_to_search = r'^report_[0-9]{4}\.txt$'
    delete_files_with_pattern_with_os(source_directory, pattern_to_search)

pathlib的實(shí)現(xiàn)

from pathlib import Path
import re

def delete_files_with_pattern_with_pathlib(src_dir, pattern):
    for entry in Path(src_dir).iterdir():
        if entry.is_file() and re.match(pattern, entry.name):
            entry.unlink()

if __name__ == "__main__":
    source_directory = 'my_dir'
    pattern_to_search = r'^report_[0-9]{4}\.txt$'
    delete_files_with_pattern_with_pathlib(source_directory, pattern_to_search)



【Python】文件操作用pathlib比os更簡(jiǎn)潔的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
镇雄县| 宁陵县| 乌海市| 府谷县| 唐海县| 柘城县| 沛县| 广饶县| 长沙县| 郴州市| 噶尔县| 英山县| 卓资县| 酉阳| 桓台县| 东阿县| 简阳市| 天镇县| 大同市| 济阳县| 罗江县| 石柱| 灵寿县| 丰台区| 三亚市| 临汾市| 蓬溪县| 安泽县| 集安市| 东莞市| 峨山| 财经| 鲁山县| 乐东| 麻江县| 光山县| 新泰市| 合川市| 永川市| 茂名市| 大足县|