1. 程式人生 > 其它 >5.2 Python3 進階 - 目錄操作

5.2 Python3 進階 - 目錄操作

>>返回主目錄


原始碼

import os

print('當前檔案絕對路徑是:', os.getcwd())  # 獲取當前Python指令碼的目錄路徑

os.chdir('D:\\')  # 切換到D盤根目錄
print('切換路徑後,再次檢視當前絕對路徑:', os.getcwd())

# os的常用屬性:
print(os.curdir)  # 獲取當前路徑,也就是 '.'
print(os.pardir)  # 獲取當前目錄的父目錄 '..'
print(os.sep)  # 用來分隔檔案路徑名的字串(反斜槓 '\')
print(os.altsep)  # 用來分隔檔案路徑名的字串(斜槓 '/')
print(os.pathsep)  # 用來分隔檔案路徑的字串(分號';')
print(os.environ)  # 獲取環境變數字典值
print(os.name)  # 獲取當前使用的作業系統型別(其中'nt'是windows,'posix'是linux或者unix)

原始碼

print(os.listdir('D:/'))
os.mkdir('dir_name')  # 在當前目錄建立dir目錄
os.makedirs('dir0/dir1/dir2', exist_ok=True)  # 目錄有重複不會報錯
os.rmdir('dir0/dir1')  # 只刪除dir2空目錄
os.removedirs('dir0/dir1')  # 刪除dir1和dir0空目錄

原始碼

os.remove('dir/test.txt')  # 刪除指定檔案test.txt
os.rename('dir0/dir1/dir2', 'dir0/dir1/dir2_name')  # 重新命名目錄dir2->dir2_name
os.renames('dir_rename/ttt', 'dir_rename0/xxx')  # 重新命名目錄dir_rename->dir_rename0, 檔案ttt->xxx
print('獲取環境變數:', os.getenv('path'))  # 推薦使用
print('獲取環境變數:', os.environ.get('path'))
os.environ['key2'] = 'value2'  # 推薦使用,設定臨時環境變數值

原始碼

import stat
import sys

os.chmod('./test.txt', stat.S_IREAD)  # 修改檔案許可權為只讀
os._exit(0)  # 0:正常推出,1:異常退出 不推薦使用
print('後面不執行,需註釋退出程式碼!')
sys.exit(0)  # 推薦使用此退出方法退出程式
os.system('dir')  # Windows下dir等,Linux下ls等

fp = os.popen('dir')  # 返回一個檔案物件
print('讀取檔案內容:', fp.readlines())


原始碼

# Author:PortosHan
# Datetime:2021/12/9 17:54
# Project:zbcf_python_lesson_project
"""
練習:分別打印出指定目錄內所有的檔名和目錄名,並統計出所有檔案和目錄的數量
思路:
1、遞迴遍歷出指定目錄
2、迴圈打印出上一步返回的檔案列表和目錄列表
3、迴圈內部加入計數變數
"""
import os

target_top = 'D:\Soft\PyCharm\zbcf_python_test_project\chapter_5'


def count_dirs_files_1(top):
    file_count = 0
    dir_count = 0
    gt = os.walk(top, topdown=False)  # 返回generate生成器

    for cur_top, dirs, files in gt:
        print(cur_top, dirs, files)
        print('當前目錄是:', cur_top)
        for cur_dir in dirs:
            print('當前目錄下的資料夾有:', cur_dir)
            dir_count += 1
        for cur_file in files:
            print('當前目錄下的檔案有:', cur_file)
            file_count += 1
        print('-' * 80)
    print(f'資料夾共有:{dir_count}個,檔案共有{file_count}個')


def count_dirs_files_2(top):
    file_count = 0
    dir_count = 0
    gt = os.walk(top, topdown=False)

    for cur_top, dirs, files in gt:
        print('cur_top:', cur_top)
        print('dirs:', dirs)
        print('files:', files)
        file_count += len(files)
        dir_count += len(dirs)
        print('*' * 80)
    print(f'資料夾共有:{dir_count}個,檔案共有{file_count}個')


count_dirs_files_1(target_top)

count_dirs_files_2(target_top)

原始碼

print(os.path.abspath('test.txt'))  # 預設當前路徑進行拼接
print(os.path.exists('test.txt'))  # 路徑存在,返回True
print(os.path.getctime('test.txt'))  # 時間戳格式
print(os.path.getmtime('test.txt'))  # 時間戳格式
print(os.path.getsize('test.txt'))  # 檔案位元組大小

原始碼

print(os.path.isfile('test.txt'))  # 判斷當前路徑是檔案,存在返回True
print(os.path.isdir('test.txt'))  # 判斷當前路徑是目錄,不存在返回False
print(os.path.join('D:\\', 'test.txt'))  # 把目錄和檔名合成一個路徑:D:\\test.txt
print(os.path.normpath('chapter_5\lesson_2/test.txt'))  # chapter_5\lesson_2\test.txt
print(os.path.split('chapter_5/lesson_2/test.txt'))  # ('chapter_5/lesson_2', 'test.txt')

原始碼

# Author:PortosHan
# Datetime:2021/12/9 18:25
# Project:zbcf_python_test_project
import os
import re

import requests


def format_name(str_name):
    """轉義命名中的非法字元"""
    pattern = r'[\\/:*?"<>|]'
    new_name = re.sub(pattern, '_', str_name)
    return new_name


def make_dir():
    """若不存在,則建立指定video目錄"""
    dir_name = 'video'
    if not os.path.exists(dir_name):
        os.mkdir(dir_name)
    return dir_name


def download_mp4_video():
    """爬取某網站的小視訊"""
    url = 'https://v.6.cn/minivideo/getMiniVideoList.php?act=recommend&page=1&pagesize=30'
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}
    response = requests.get(url, headers).json()  # 請求介面,獲得返回資料

    content_list = response['content']['list']  # 獲取返回資料中的list列表資料

    # 迴圈遍歷出,所有的MP4地址playurl
    for data in content_list:
        video_title = data['title']
        video_url = data['playurl']

        # 格式化MP4檔名
        format_video_title = format_name(video_title) + '.mp4'

        # 請求MP4地址,獲取返回的資料流
        video_response = requests.get(video_url, headers).content

        # 下載儲存資料流
        with open(f'{make_dir()}\\{format_video_title}', 'wb') as fp:
            fp.write(video_response)
    print('全部下載完成!')


download_mp4_video()

>>返回主目錄

作者: PortosHan

出處: https://www.cnblogs.com/PortosHan/

關於作者:專注於軟體測試、測試開發等領域,請多多賜教!

本文版權歸作者和部落格園共有,歡迎轉載,但必須給出原文連結,並保留此段宣告,否則保留追究法律責任的權利。 原文連結 如有問題,可郵件([email protected])諮詢。