5.2 Python3 進階 - 目錄操作
阿新 • • 發佈:2021-12-10
>>返回主目錄
原始碼
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])諮詢。