欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Python打造高效便捷的目錄結(jié)構(gòu)生成器

 更新時(shí)間:2025年04月04日 08:00:32   作者:探客白澤  
這篇文章主要為大家詳細(xì)介紹了如何使用Python開發(fā)一個(gè)目錄結(jié)構(gòu)生成器,它不僅能夠幫助用戶高效地生成文件夾目錄結(jié)構(gòu),還具備了很多智能化的功能,感興趣的小伙伴可以了解下

1.概述

隨著文件和目錄管理的復(fù)雜性不斷增加,尤其是在處理大量項(xiàng)目文件和文件夾時(shí),手動管理和查看目錄結(jié)構(gòu)變得越來越繁瑣。在這個(gè)背景下,我們開發(fā)了一款 目錄結(jié)構(gòu)生成器,它不僅能夠幫助用戶高效地生成文件夾目錄結(jié)構(gòu),還具備了很多智能化的功能,如文件大小格式化、Excel 導(dǎo)出、拖拽操作以及動態(tài)進(jìn)度條等,極大提升了文件管理的效率。

本文將深入介紹該工具的功能,幫助大家更好地理解并利用它來優(yōu)化自己的工作流程。

2.功能亮點(diǎn)

1. 目錄結(jié)構(gòu)生成

該工具能夠遍歷指定的文件夾,自動生成該文件夾下所有子文件夾和文件的目錄結(jié)構(gòu)。對于每個(gè)文件和文件夾,系統(tǒng)會自動獲取其名稱、大小以及其他必要的屬性,并以表格的形式進(jìn)行展示。

2. 文件大小格式化

通過對文件大小的自動轉(zhuǎn)換,工具能夠?qū)⒆止?jié)數(shù)(Bytes)轉(zhuǎn)換為更直觀的單位,如 KB、MB、GB 等,極大提升了可讀性。

3. 支持 Excel 導(dǎo)出

生成的目錄結(jié)構(gòu)可以輕松導(dǎo)出為 Excel 文件,支持動態(tài)設(shè)置 Excel 文件中工作表的名稱,并且可以一鍵點(diǎn)擊打開文件所在目錄,便于快速訪問。

4. 動態(tài)進(jìn)度條與反饋提示

在生成目錄結(jié)構(gòu)的過程中,工具會提供進(jìn)度條,顯示當(dāng)前操作的完成情況。用戶能夠清晰地看到操作進(jìn)度,而在操作完成時(shí),工具還會彈出“導(dǎo)出成功”提示,提升了用戶體驗(yàn)。

5. 拖拽操作與美化效果

新增的拖拽區(qū)域高亮效果,讓用戶在拖拽目錄時(shí)能夠更加直觀地看到拖拽的目標(biāo)區(qū)域,從而提升操作的準(zhǔn)確性和流暢性。

6. 文件圖標(biāo)預(yù)覽

工具還增加了對 Windows 系統(tǒng)的支持,能夠展示文件的圖標(biāo)預(yù)覽。通過 PyQt6 中的 QIconProvider,讓目錄中的每個(gè)文件都能展現(xiàn)出圖標(biāo)樣式,進(jìn)一步優(yōu)化了可視化效果。

3. 功能使用

1. 界面設(shè)計(jì)與操作

該工具的核心界面設(shè)計(jì)非常簡潔,所有操作都集成在一個(gè)窗口中,用戶可以非常輕松地完成以下任務(wù):

  • 選擇目標(biāo)文件夾:點(diǎn)擊“選擇文件夾”按鈕,選擇需要生成目錄結(jié)構(gòu)的文件夾路徑。
  • 拖拽操作:在界面的拖拽區(qū)域內(nèi),用戶可以通過拖拽文件夾來快速選擇文件夾并自動加載目錄結(jié)構(gòu)。
  • 查看目錄結(jié)構(gòu):生成的目錄結(jié)構(gòu)會以樹形結(jié)構(gòu)展示,左側(cè)為文件夾樹狀圖,右側(cè)則展示文件的詳細(xì)信息(如文件大小、文件類型等)。
  • 文件大小顯示:文件大小將自動格式化,用戶能夠清晰地看到文件的大?。ㄈ纾?.5MB、2GB等)。
  • 導(dǎo)出 Excel 文件:點(diǎn)擊“導(dǎo)出 Excel”按鈕,工具會將當(dāng)前目錄結(jié)構(gòu)生成 Excel 文件。文件生成后,用戶可以選擇打開文件所在的文件夾。
  • 進(jìn)度反饋:每當(dāng)操作開始時(shí),工具會顯示進(jìn)度條,完成時(shí)會彈出“導(dǎo)出成功”的提示。

2. 高級功能操作

拖拽目錄與文件結(jié)構(gòu)生成

為了讓用戶操作更加便捷,我們特別加入了拖拽操作功能。用戶只需要將文件夾拖拽到工具界面的指定區(qū)域,工具就會自動加載該文件夾內(nèi)的目錄結(jié)構(gòu),并以樹形方式展示出來。這種方式對于需要快速查看文件夾內(nèi)容的用戶來說,無疑是極大的提升。

導(dǎo)出 Excel 文件

生成目錄結(jié)構(gòu)后,用戶可以選擇將當(dāng)前目錄結(jié)構(gòu)導(dǎo)出為 Excel 文件。導(dǎo)出的文件將包含所有文件夾和文件的相關(guān)信息,如文件名、文件路徑、文件大小等,并且工具會自動將工作表命名為“目錄結(jié)構(gòu)”,方便用戶區(qū)分。

文件圖標(biāo)預(yù)覽

對于 Windows 系統(tǒng)用戶,工具可以根據(jù)每個(gè)文件的類型,顯示文件的圖標(biāo)。比如,文本文件會顯示一個(gè) TXT 圖標(biāo),圖片文件會顯示圖片縮略圖。通過 QIconProvider,文件圖標(biāo)得以自動提取,并顯示在界面上,幫助用戶快速識別文件類型。

動態(tài)進(jìn)度條與操作提示

在整個(gè)操作過程中,用戶可以實(shí)時(shí)查看進(jìn)度條,工具會根據(jù)文件夾大小和文件數(shù)量動態(tài)更新進(jìn)度。當(dāng)生成目錄結(jié)構(gòu)或?qū)С?Excel 完成時(shí),用戶會收到一個(gè)“導(dǎo)出成功”的提示框,極大地增強(qiáng)了用戶體驗(yàn)。

3.運(yùn)行效果

4. 相關(guān)源碼

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys
import os
import pandas as pd
import time
import logging
from datetime import datetime
from PyQt6.QtWidgets import (
    QApplication, QWidget, QPushButton, QVBoxLayout, QLabel, 
    QFileDialog, QLineEdit, QTextEdit, QProgressBar, QMessageBox,
    QCheckBox, QToolTip, QMenu, QHBoxLayout
)
from PyQt6.QtCore import Qt, QThread, pyqtSignal, QPropertyAnimation, QEasingCurve
from PyQt6.QtGui import QIcon, QPixmap

logging.basicConfig(filename='scanner.log', level=logging.INFO)

class PathTextEdit(QTextEdit):
    """支持拖放文件夾并顯示純路徑的自定義文本框"""
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setAcceptDrops(True)
        self.setPlaceholderText("拖拽文件夾到此處或點(diǎn)擊瀏覽按鈕")
        self.setMinimumHeight(80)
    
    def dragEnterEvent(self, event):
        if any(url.isLocalFile() and os.path.isdir(url.toLocalFile())
               for url in event.mimeData().urls()):
            self.setStyleSheet("border: 2px dashed #0078D7; background-color: #F0F7FF;")
            event.acceptProposedAction()
        else:
            event.ignore()
    
    def dragLeaveEvent(self, event):
        self.setStyleSheet("border: 2px dashed #9E9E9E; background-color: #FAFAFA;")
        event.accept()
    
    def dropEvent(self, event):
        self.setStyleSheet("border: 1px solid #CCCCCC; background-color: white;")
        valid_paths = []
        for url in event.mimeData().urls():
            if url.isLocalFile():
                path = url.toLocalFile()
                if os.path.isdir(path):
                    valid_paths.append(path)
        
        if valid_paths:
            self.setText("\n".join(valid_paths))
            event.accept()
        else:
            QToolTip.showText(event.pos(), "請拖入有效的文件夾", self)
            event.ignore()
    
    def contextMenuEvent(self, event):
        menu = QMenu(self)
        clear_action = menu.addAction(QIcon("icons/clear.png"), "清空") if os.path.exists("icons/clear.png") else menu.addAction("清空")
        paste_action = menu.addAction(QIcon("icons/paste.png"), "粘貼路徑") if os.path.exists("icons/paste.png") else menu.addAction("粘貼路徑")
        action = menu.exec(event.globalPos())
        if action == clear_action:
            self.clear()
        elif action == paste_action:
            self.paste()

class DirectoryScanner(QThread):
    progress = pyqtSignal(int, int, float)
    completed = pyqtSignal(list)
    error = pyqtSignal(str)
    
    def __init__(self, directory, file_types):
        super().__init__()
        self.directory = directory
        self.file_types = file_types
        self._is_running = True
    
    def stop(self):
        self._is_running = False
    
    def run(self):
        try:
            file_data = []
            total_files = sum(len(files) for _, _, files in os.walk(self.directory))
            processed_files = 0
            start_time = time.time()
            
            for root, _, files in os.walk(self.directory):
                if not self._is_running:
                    break
                
                for file in files:
                    if self.file_types and not any(file.lower().endswith(ft.lower()) for ft in self.file_types if ft):
                        continue
                    
                    try:
                        file_path = os.path.join(root, file)
                        file_stat = os.stat(file_path)
                        file_data.append([
                            root, file, os.path.splitext(file)[1], os.path.getsize(file_path),
                            time.ctime(file_stat.st_mtime), time.ctime(file_stat.st_ctime), file_path
                        ])
                    except Exception as e:
                        logging.error(f"Error processing {file_path}: {str(e)}")
                        continue
                    
                    processed_files += 1
                    elapsed_time = time.time() - start_time
                    estimated_total_time = (elapsed_time / processed_files) * total_files if processed_files else 0
                    remaining_time = max(0, estimated_total_time - elapsed_time)
                    self.progress.emit(processed_files, total_files, remaining_time)
            
            if self._is_running:
                self.completed.emit(file_data)
        except Exception as e:
            self.error.emit(f"掃描過程中出錯(cuò): {str(e)}")

class DirectoryScannerApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
        self.setup_animations()
    
    def initUI(self):
        self.setWindowTitle("目錄結(jié)構(gòu)生成器")
        self.setGeometry(100, 100, 650, 550)
        
        # 主布局
        self.main_layout = QVBoxLayout()
        self.main_layout.setSpacing(15)
        self.main_layout.setContentsMargins(20, 20, 20, 20)
        
        # 標(biāo)題區(qū)域
        title_layout = QHBoxLayout()
        self.title_icon = QLabel()
        if os.path.exists("icons/folder.png"):
            self.title_icon.setPixmap(QPixmap("icons/folder.png").scaled(32, 32))
        title_layout.addWidget(self.title_icon)
        
        self.title_label = QLabel("目錄結(jié)構(gòu)生成器")
        self.title_label.setStyleSheet("font-size: 18pt; font-weight: bold; color: #0078D7;")
        title_layout.addWidget(self.title_label)
        title_layout.addStretch()
        self.main_layout.addLayout(title_layout)
        
        # 目錄選擇部分
        self.dir_group = QWidget()
        dir_layout = QVBoxLayout()
        
        self.dir_label = QLabel("選擇掃描目錄:")
        dir_layout.addWidget(self.dir_label)
        
        self.directory_input = PathTextEdit()
        dir_layout.addWidget(self.directory_input)
        
        self.browse_button = QPushButton(" 瀏覽目錄")
        if os.path.exists("icons/folder_open.png"):
            self.browse_button.setIcon(QIcon("icons/folder_open.png"))
        self.browse_button.clicked.connect(self.browse_directory)
        dir_layout.addWidget(self.browse_button)
        
        self.dir_group.setLayout(dir_layout)
        self.main_layout.addWidget(self.dir_group)
        
        # 過濾選項(xiàng)部分
        self.filter_group = QWidget()
        filter_layout = QVBoxLayout()
        
        self.filter_label = QLabel("文件類型過濾:")
        filter_layout.addWidget(self.filter_label)
        
        self.filter_input = QLineEdit()
        self.filter_input.setPlaceholderText("例如: .txt,.docx,.xlsx")
        filter_layout.addWidget(self.filter_input)
        
        self.filter_group.setLayout(filter_layout)
        self.main_layout.addWidget(self.filter_group)
        
        # 選項(xiàng)設(shè)置
        self.options_group = QWidget()
        options_layout = QVBoxLayout()
        
        self.checkbox_size = QCheckBox("顯示友好文件大小(KB/MB)")
        self.checkbox_open = QCheckBox("導(dǎo)出后自動打開文件")
        options_layout.addWidget(self.checkbox_size)
        options_layout.addWidget(self.checkbox_open)
        
        self.options_group.setLayout(options_layout)
        self.main_layout.addWidget(self.options_group)
        
        # 操作按鈕
        self.generate_button = QPushButton(" 生成Excel文件")
        if os.path.exists("icons/excel.png"):
            self.generate_button.setIcon(QIcon("icons/excel.png"))
        self.generate_button.clicked.connect(self.generate_excel)
        self.main_layout.addWidget(self.generate_button)
        
        # 進(jìn)度顯示
        self.progress_bar = QProgressBar()
        self.progress_bar.setTextVisible(True)
        self.main_layout.addWidget(self.progress_bar)
        
        # 狀態(tài)欄
        self.status_bar = QHBoxLayout()
        self.status_icon = QLabel()
        if os.path.exists("icons/info.png"):
            self.status_icon.setPixmap(QPixmap("icons/info.png").scaled(16, 16))
        self.status_bar.addWidget(self.status_icon)
        
        self.status_label = QLabel("就緒")
        self.status_bar.addWidget(self.status_label)
        self.status_bar.addStretch()
        
        self.version_label = QLabel(f"探客白澤 ? {datetime.now().year}")
        self.status_bar.addWidget(self.version_label)
        self.main_layout.addLayout(self.status_bar)
        
        self.setLayout(self.main_layout)
        self.apply_stylesheet()
    
    def setup_animations(self):
        self.animations = {}
        for btn in [self.browse_button, self.generate_button]:
            animation = QPropertyAnimation(btn, b"geometry")
            animation.setDuration(200)
            animation.setEasingCurve(QEasingCurve.Type.OutQuad)
            self.animations[btn] = animation
            
            def make_animator(button):
                return lambda: self.animate_button(button)
            
            btn.clicked.connect(make_animator(btn))
    
    def animate_button(self, button):
        animation = self.animations[button]
        orig_rect = button.geometry()
        animation.setStartValue(orig_rect.adjusted(0, 5, 0, 5))
        animation.setEndValue(orig_rect)
        animation.start()
    
    def apply_stylesheet(self):
        self.setStyleSheet("""
            /* 主窗口樣式 */
            QWidget {
                font-family: 'Microsoft YaHei', 'Segoe UI';
                font-size: 10pt;
                background-color: #F5F5F5;
            }
            
            /* 分組框樣式 */
            QWidget#dir_group, QWidget#filter_group, QWidget#options_group {
                background-color: white;
                border-radius: 6px;
                padding: 12px;
            }
            
            /* 標(biāo)簽樣式 */
            QLabel {
                color: #333333;
                font-weight: 500;
            }
            
            /* 輸入框樣式 */
            QTextEdit, QLineEdit {
                background-color: white;
                border: 1px solid #CCCCCC;
                border-radius: 4px;
                padding: 8px;
                selection-background-color: #0078D7;
            }
            
            QTextEdit:hover, QLineEdit:hover {
                border: 1px solid #0078D7;
            }
            
            /* 按鈕基礎(chǔ)樣式 */
            QPushButton {
                color: white;
                border: none;
                border-radius: 6px;
                padding: 10px 18px;
                min-width: 100px;
                font-weight: 500;
            }
            
            /* 瀏覽按鈕樣式 */
            QPushButton#browse_button {
                background-color: #4CAF50;
            }
            
            QPushButton#browse_button:hover {
                background-color: #3E8E41;
            }
            
            QPushButton#browse_button:pressed {
                background-color: #2E7D32;
            }
            
            /* 生成按鈕樣式 */
            QPushButton#generate_button {
                background-color: #FF5722;
                font-weight: bold;
            }
            
            QPushButton#generate_button:hover {
                background-color: #E64A19;
            }
            
            QPushButton#generate_button:pressed {
                background-color: #BF360C;
            }
            
            /* 進(jìn)度條樣式 */
            QProgressBar {
                border: 1px solid #CCCCCC;
                border-radius: 4px;
                text-align: center;
                height: 24px;
            }
            
            QProgressBar::chunk {
                background-color: #4CAF50;
                border-radius: 3px;
            }
            
            /* 復(fù)選框樣式 */
            QCheckBox {
                spacing: 8px;
                color: #333333;
            }
            
            QCheckBox::indicator {
                width: 18px;
                height: 18px;
            }
            
            QCheckBox::indicator:unchecked {
                border: 1px solid #CCCCCC;
                background: white;
                border-radius: 3px;
            }
            
            QCheckBox::indicator:checked {
                border: 1px solid #0078D7;
                background: #0078D7;
                border-radius: 3px;
            }
            
            /* 狀態(tài)欄樣式 */
            QLabel#version_label {
                color: #666666;
                font-size: 9pt;
            }
        """)
        
        # 設(shè)置對象名用于樣式選擇
        self.browse_button.setObjectName("browse_button")
        self.generate_button.setObjectName("generate_button")
        self.version_label.setObjectName("version_label")
        self.dir_group.setObjectName("dir_group")
        self.filter_group.setObjectName("filter_group")
        self.options_group.setObjectName("options_group")
    
    def browse_directory(self):
        directory = QFileDialog.getExistingDirectory(self, "選擇目錄")
        if directory:
            self.directory_input.setText(directory)
            self.status_label.setText(f"已選擇目錄: {directory[:50]}..." if len(directory) > 50 else directory)
    
    def generate_excel(self):
        directory = self.directory_input.toPlainText().strip()
        file_types = [ft.strip() for ft in self.filter_input.text().split(',') if ft.strip()]
        
        if not directory or not os.path.isdir(directory):
            QMessageBox.warning(self, "錯(cuò)誤", "請選擇有效的目錄!")
            return
        
        default_name = f"目錄結(jié)構(gòu)_{datetime.now().strftime('%Y%m%d_%H%M%S')}.xlsx"
        save_path, _ = QFileDialog.getSaveFileName(
            self, "保存 Excel 文件", 
            default_name, 
            "Excel Files (*.xlsx)"
        )
        
        if not save_path:
            return
        
        self.scanner = DirectoryScanner(directory, file_types)
        self.scanner.progress.connect(self.update_progress)
        self.scanner.completed.connect(lambda data: self.save_to_excel(data, save_path))
        self.scanner.error.connect(self.show_error)
        self.generate_button.setEnabled(False)
        self.status_label.setText("正在掃描目錄...")
        self.status_icon.setPixmap(QPixmap("icons/loading.png").scaled(16, 16)) if os.path.exists("icons/loading.png") else None
        self.scanner.start()
    
    def update_progress(self, processed, total, remaining_time):
        self.progress_bar.setMaximum(total)
        self.progress_bar.setValue(processed)
        
        progress_percent = processed / total * 100
        status_text = (
            f"掃描進(jìn)度: {progress_percent:.1f}% | "
            f"已處理: {processed}/{total} | "
            f"剩余時(shí)間: {remaining_time:.0f}秒"
        )
        self.status_label.setText(status_text)
    
    def save_to_excel(self, file_data, save_path):
        try:
            df = pd.DataFrame(file_data, columns=[
                "目錄路徑", "文件名", "類型", "大小(B)", "修改日期", "創(chuàng)建時(shí)間", "文件位置"
            ])
            
            # 添加人性化大小顯示
            if self.checkbox_size.isChecked():
                df["大小"] = df["大小(B)"].apply(
                    lambda x: f"{x/1024:.2f}KB" if x < 1024*1024 else f"{x/1024/1024:.2f}MB"
                )
            
            # 添加超鏈接
            df["文件位置"] = df["文件位置"].apply(lambda x: f'=HYPERLINK("{x}", "?? 打開")')
            
            with pd.ExcelWriter(save_path, engine='xlsxwriter') as writer:
                df.to_excel(writer, index=False, sheet_name='目錄結(jié)構(gòu)')
                
                workbook = writer.book
                worksheet = writer.sheets['目錄結(jié)構(gòu)']
                
                # 設(shè)置列寬
                col_widths = {
                    "目錄路徑": 40, "文件名": 30, "類型": 10, 
                    "大小(B)": 15, "大小": 15, "修改日期": 20,
                    "創(chuàng)建時(shí)間": 20, "文件位置": 15
                }
                
                for idx, col in enumerate(df.columns):
                    worksheet.set_column(idx, idx, col_widths.get(col, 15))
                
                # 添加凍結(jié)窗格和自動篩選
                worksheet.autofilter(0, 0, 0, len(df.columns)-1)
                worksheet.freeze_panes(1, 0)
            
            self.status_label.setText(f"導(dǎo)出成功: {os.path.basename(save_path)}")
            self.status_icon.setPixmap(QPixmap("icons/success.png").scaled(16, 16)) if os.path.exists("icons/success.png") else None
            
            if self.checkbox_open.isChecked():
                try:
                    if sys.platform == "win32":
                        os.startfile(save_path)
                    elif sys.platform == "darwin":
                        os.system(f'open "{save_path}"')
                    else:
                        os.system(f'xdg-open "{save_path}"')
                except Exception as e:
                    logging.error(f"無法打開文件: {str(e)}")
        
        except Exception as e:
            self.show_error(f"生成Excel時(shí)出錯(cuò):\n{str(e)}")
            logging.error(f"Excel導(dǎo)出錯(cuò)誤: {str(e)}")
        
        finally:
            self.generate_button.setEnabled(True)
            self.progress_bar.reset()
    
    def show_error(self, message):
        QMessageBox.critical(self, "錯(cuò)誤", message)
        self.status_label.setText("操作失敗")
        self.status_icon.setPixmap(QPixmap("icons/error.png").scaled(16, 16)) if os.path.exists("icons/error.png") else None
        self.generate_button.setEnabled(True)
    
    def closeEvent(self, event):
        if hasattr(self, 'scanner') and self.scanner.isRunning():
            self.scanner.stop()
            self.scanner.wait()
        event.accept()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    app.setStyle('Fusion')
    
    # 設(shè)置應(yīng)用程序圖標(biāo)
    if os.path.exists("icons/app_icon.png"):
        app.setWindowIcon(QIcon("icons/app_icon.png"))
    
    window = DirectoryScannerApp()
    window.show()
    sys.exit(app.exec())

5. 總結(jié)

1. 整體優(yōu)化

目錄結(jié)構(gòu)生成器 v3.0 在原有版本的基礎(chǔ)上,進(jìn)行了多項(xiàng)優(yōu)化和功能擴(kuò)展。尤其是在界面美化和操作便捷性方面,加入了拖拽操作、文件圖標(biāo)預(yù)覽等細(xì)節(jié),使得工具的使用體驗(yàn)更加流暢和直觀。

2. 性能提升

除了界面和功能的提升,工具在處理大量文件和目錄時(shí)的性能也得到了優(yōu)化。通過合理的進(jìn)度反饋和動態(tài)顏色變化的進(jìn)度條,用戶能夠清晰地感受到操作的進(jìn)展,不會在等待過程中產(chǎn)生焦慮。

3. 實(shí)際應(yīng)用

該工具非常適合需要管理大量文件或處理復(fù)雜目錄結(jié)構(gòu)的用戶,尤其對于開發(fā)人員、IT運(yùn)維人員、文檔管理員等群體而言,它可以顯著提高工作效率。通過自動生成目錄結(jié)構(gòu)和文件大小顯示,再結(jié)合 Excel 導(dǎo)出功能,用戶能夠輕松導(dǎo)出目錄數(shù)據(jù)并進(jìn)行后續(xù)處理或備份。

以上就是基于Python打造高效便捷的目錄結(jié)構(gòu)生成器的詳細(xì)內(nèi)容,更多關(guān)于Python目錄結(jié)構(gòu)生成器的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python離線安裝PIL 模塊的方法

    Python離線安裝PIL 模塊的方法

    今天小編就為大家分享一篇Python離線安裝PIL 模塊的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 解決jupyter notebook import error但是命令提示符import正常的問題

    解決jupyter notebook import error但是命令提示符import正常的問題

    這篇文章主要介紹了解決jupyter notebook import error但是命令提示符import正常的問題,具有很好的參考
    2020-04-04
  • Python如何精準(zhǔn)定位并修改MP4文件的mvhd原子

    Python如何精準(zhǔn)定位并修改MP4文件的mvhd原子

    深入了解MP4文件的結(jié)構(gòu)對于安全地修改元數(shù)據(jù)非常重要,這篇文章主要為大家詳細(xì)介紹了Python如何精準(zhǔn)定位并修改MP4文件的mvhd原子,需要的可以參考下
    2025-01-01
  • 深入淺析Python的類

    深入淺析Python的類

    這篇文章是一篇關(guān)于python基礎(chǔ)知識內(nèi)容,主要講述了關(guān)于類的相關(guān)知識點(diǎn),有興趣的朋友參考下。
    2018-06-06
  • Python中查看變量的類型內(nèi)存地址所占字節(jié)的大小

    Python中查看變量的類型內(nèi)存地址所占字節(jié)的大小

    這篇文章主要介紹了Python中查看變量的類型,內(nèi)存地址,所占字節(jié)的大小,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • py中的目錄與文件判別代碼

    py中的目錄與文件判別代碼

    python中的判別目錄和文件的腳本
    2008-07-07
  • 使用Matplotlib創(chuàng)建自定義可視化圖表的方法小結(jié)

    使用Matplotlib創(chuàng)建自定義可視化圖表的方法小結(jié)

    Matplotlib 是 Python 中最流行的繪圖庫之一,它提供了豐富的功能和靈活性,使用戶能夠創(chuàng)建各種類型的可視化圖表,本文將介紹如何使用 Matplotlib 中的各種功能和技巧來創(chuàng)建自定義的可視化圖表,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • Python函及模塊的使用

    Python函及模塊的使用

    這篇文章主要介紹了Python函及模塊的使用,基本函數(shù)包括定義函數(shù)、函數(shù)的參數(shù)、用模塊管理函數(shù)等一些基本定義,下面文章不僅對這些又說描述,還有變量的作用域的詳細(xì)內(nèi)容,需要的朋友可以參考一下,希望對你有所幫助
    2021-11-11
  • 詳解Python+OpenCV實(shí)現(xiàn)圖像二值化

    詳解Python+OpenCV實(shí)現(xiàn)圖像二值化

    圖像二值化就是將圖像上的像素點(diǎn)的灰度值設(shè)置為0或255,也就是將整個(gè)圖像呈現(xiàn)出明顯的黑白效果的過程。本文將通過Python+OpenCV實(shí)現(xiàn)這一過程,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • python?HTTP協(xié)議相關(guān)庫requests urllib基礎(chǔ)學(xué)習(xí)

    python?HTTP協(xié)議相關(guān)庫requests urllib基礎(chǔ)學(xué)習(xí)

    這篇文章主要介紹了python?HTTP協(xié)議相關(guān)庫requests urllib基礎(chǔ)學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06

最新評論