最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python開發(fā)一個(gè)文件夾文件名提取工具(附完整代碼)

 更新時(shí)間:2025年09月18日 09:13:14   作者:小莊-Python辦公  
這篇文章主要為大家詳細(xì)介紹了如何使用python開發(fā)一個(gè)文件夾文件名提取工具,專門用于提取文件夾中所有文件的名稱并導(dǎo)出為Excel格式,感興趣的小伙伴可以了解下

項(xiàng)目簡介

這是一個(gè)基于PyQt5開發(fā)的桌面應(yīng)用程序,專門用于提取文件夾中所有文件的名稱并導(dǎo)出為Excel格式。該工具支持拖拽操作,提供直觀的用戶界面,能夠遞歸遍歷文件夾結(jié)構(gòu),是文件管理和數(shù)據(jù)整理的實(shí)用工具。

主要功能特性

核心功能

  • 拖拽支持:直接將文件夾拖拽到應(yīng)用界面即可選擇目標(biāo)文件夾
  • 遞歸遍歷:自動(dòng)遍歷文件夾及其所有子文件夾
  • 文件統(tǒng)計(jì):統(tǒng)計(jì)并顯示所有文件的詳細(xì)信息
  • Excel導(dǎo)出:將文件列表導(dǎo)出為Excel格式,便于后續(xù)處理
  • 目錄結(jié)構(gòu)顯示:按目錄層級組織顯示文件列表

用戶體驗(yàn)

  • 可視化拖拽反饋:拖拽時(shí)提供綠色高亮效果
  • 實(shí)時(shí)狀態(tài)提示:清晰的操作提示和狀態(tài)反饋
  • 現(xiàn)代化界面:采用現(xiàn)代扁平化設(shè)計(jì)風(fēng)格
  • 響應(yīng)式布局:界面元素自適應(yīng)窗口大小

技術(shù)架構(gòu)

技術(shù)棧

  • GUI框架:PyQt5
  • 數(shù)據(jù)處理:pandas
  • 文件操作:Python標(biāo)準(zhǔn)庫 (os, pathlib)
  • 開發(fā)語言:Python 3.x

核心組件

1. FileListWidget 類

class FileListWidget(QTextEdit):
    """支持拖拽的文本顯示區(qū)域"""

主要職責(zé):

  • 處理拖拽事件(dragEnterEvent, dragLeaveEvent, dragMoveEvent, dropEvent)
  • 驗(yàn)證拖拽內(nèi)容是否為文件夾
  • 提供視覺反饋效果
  • 存儲選中的文件夾路徑

關(guān)鍵特性:

  • 跨平臺兼容性:通過dragMoveEvent確保Windows平臺的拖拽穩(wěn)定性
  • 智能驗(yàn)證:只接受文件夾類型的拖拽,拒絕文件拖拽
  • 視覺反饋:拖拽進(jìn)入時(shí)顯示綠色邊框和背景色

2. MainWindow 類

class MainWindow(QMainWindow):
    """主窗口類"""

主要職責(zé):

  • 構(gòu)建用戶界面布局
  • 處理業(yè)務(wù)邏輯(文件遍歷、數(shù)據(jù)處理)
  • 管理用戶交互事件
  • 控制Excel導(dǎo)出功能

詳細(xì)功能說明

拖拽功能實(shí)現(xiàn)

拖拽事件處理流程

  • dragEnterEvent:檢測拖拽內(nèi)容是否包含本地文件夾
  • dragMoveEvent:在Windows平臺持續(xù)接受拖拽操作
  • dragLeaveEvent:恢復(fù)界面原始樣式
  • dropEvent:處理文件夾路徑并更新界面

關(guān)鍵代碼解析

def dragEnterEvent(self, event: QDragEnterEvent):
    if event.mimeData().hasUrls():
        urls = event.mimeData().urls()
        accept = False
        if urls:
            for url in urls:
                if url.isLocalFile():
                    file_path = url.toLocalFile()
                    if os.path.isdir(file_path):
                        accept = True
                        break
        
        if accept:
            # 設(shè)置拖拽高亮樣式
            self.setStyleSheet("""...""") 
            event.setDropAction(Qt.CopyAction)
            event.accept()

文件遍歷算法

使用Python的os.walk()方法實(shí)現(xiàn)遞歸文件遍歷:

def get_all_files(self, folder_path):
    file_list = []
    for root, dirs, files in os.walk(folder_path):
        relative_root = os.path.relpath(root, folder_path)
        if relative_root == '.':
            relative_root = '根目錄'
        
        for file in files:
            file_list.append({
                '目錄': relative_root,
                '文件名': file
            })
    return file_list

算法特點(diǎn):

  • 遞歸遍歷所有子目錄
  • 記錄文件的相對路徑信息
  • 構(gòu)建結(jié)構(gòu)化數(shù)據(jù)便于后續(xù)處理

Excel導(dǎo)出功能

利用pandas庫實(shí)現(xiàn)Excel導(dǎo)出:

def export_to_excel(self):
    df = pd.DataFrame(self.file_data)
    df.to_excel(file_path, index=False, sheet_name='文件列表')

導(dǎo)出特性:

  • 支持自定義保存路徑
  • 包含目錄和文件名兩列數(shù)據(jù)
  • 提供操作成功/失敗反饋

界面設(shè)計(jì)

布局結(jié)構(gòu)

┌─────────────────────────────────────┐
│           應(yīng)用標(biāo)題                    │
├─────────────────────────────────────┤
│                                     │
│         拖拽區(qū)域                     │
│    (支持文件夾拖拽)                   │
│                                     │
├─────────────────────────────────────┤
│  [獲取文件名]    [導(dǎo)出Excel]          │
├─────────────────────────────────────┤
│                                     │
│         結(jié)果顯示區(qū)域                  │
│                                     │
└─────────────────────────────────────┘

樣式設(shè)計(jì)

配色方案

  • 主色調(diào):綠色系 (#4CAF50) - 代表成功和自然
  • 輔助色:藍(lán)色系 (#2196F3) - 代表專業(yè)和信任
  • 背景色:淺灰色系 (#f0f0f0, #f9f9f9) - 提供舒適的視覺體驗(yàn)

交互反饋

  • 拖拽狀態(tài):綠色虛線邊框 + 淺綠背景
  • 按鈕懸停:顏色加深效果
  • 禁用狀態(tài):灰色顯示

效果圖

完整代碼

import sys
import os
from pathlib import Path
from PyQt5.QtWidgets import (
    QApplication, QMainWindow, QVBoxLayout, QHBoxLayout, 
    QWidget, QPushButton, QTextEdit, QLabel, QMessageBox,
    QFileDialog
)
from PyQt5.QtCore import Qt, QMimeData, QUrl
from PyQt5.QtGui import QDragEnterEvent, QDropEvent
import pandas as pd


class FileListWidget(QTextEdit):
    """支持拖拽的文本顯示區(qū)域"""
    
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setAcceptDrops(True)
        self.setReadOnly(True)
        self.setPlaceholderText("請將文件夾拖拽到此處...")
        self.folder_path = None
        
    def dragEnterEvent(self, event: QDragEnterEvent):
        print("拖拽進(jìn)入事件觸發(fā)")  # 調(diào)試信息
        if event.mimeData().hasUrls():
            urls = event.mimeData().urls()
            print(f"檢測到URLs: {len(urls)}個(gè)")  # 調(diào)試信息
            
            accept = False
            if urls:
                for url in urls:
                    if url.isLocalFile():
                        file_path = url.toLocalFile()
                        print(f"檢查路徑: {file_path}")  # 調(diào)試信息
                        if os.path.isdir(file_path):
                            accept = True
                            break
            
            if accept:
                print("接受拖拽")  # 調(diào)試信息
                self.setStyleSheet("""
                    QTextEdit {
                        border: 2px dashed #4CAF50;
                        border-radius: 10px;
                        background-color: #e8f5e8;
                        font-size: 14px;
                        padding: 10px;
                    }
                """)
                event.setDropAction(Qt.CopyAction)
                event.accept()
            else:
                print("拒絕拖拽 - 沒有可用的目錄")  # 調(diào)試信息
                event.ignore()
        else:
            print("拒絕拖拽 - 沒有URL數(shù)據(jù)")  # 調(diào)試信息
            event.ignore()
            
    def dragLeaveEvent(self, event):
        # 恢復(fù)原始樣式
        self.setStyleSheet("""
            QTextEdit {
                border: 2px dashed #aaa;
                border-radius: 10px;
                background-color: #f9f9f9;
                font-size: 14px;
                padding: 10px;
            }
        """)
        super().dragLeaveEvent(event)
        
    def dragMoveEvent(self, event):
        # 某些平臺需要在dragMoveEvent中持續(xù)接受拖拽
        if event.mimeData().hasUrls():
            for url in event.mimeData().urls():
                if url.isLocalFile() and os.path.isdir(url.toLocalFile()):
                    event.setDropAction(Qt.CopyAction)
                    event.accept()
                    return
        event.ignore()
            
    def dropEvent(self, event: QDropEvent):
        print("拖拽放下事件觸發(fā)")  # 調(diào)試信息
        
        # 恢復(fù)原始樣式
        self.setStyleSheet("""
            QTextEdit {
                border: 2px dashed #aaa;
                border-radius: 10px;
                background-color: #f9f9f9;
                font-size: 14px;
                padding: 10px;
            }
        """)
        
        urls = event.mimeData().urls()
        print(f"放下時(shí)檢測到URLs: {len(urls) if urls else 0}個(gè)")  # 調(diào)試信息
        
        if urls:
            dropped_folder = None
            for url in urls:
                if url.isLocalFile():
                    p = url.toLocalFile()
                    print(f"放下的路徑候選: {p}")  # 調(diào)試信息
                    if os.path.isdir(p):
                        dropped_folder = p
                        break
            
            if dropped_folder:
                self.folder_path = dropped_folder
                self.setText(f"已選擇文件夾: {dropped_folder}")
                print(f"成功選擇文件夾: {dropped_folder}")  # 調(diào)試信息
                event.setDropAction(Qt.CopyAction)
                event.accept()
            else:
                print("錯(cuò)誤: 沒有檢測到文件夾 (可能是文件或無效路徑)")  # 調(diào)試信息
                QMessageBox.warning(self, "警告", "請拖入文件夾,不是文件!")
                event.ignore()
        else:
            print("錯(cuò)誤: 沒有URLs")  # 調(diào)試信息
            event.ignore()


class MainWindow(QMainWindow):
    """主窗口類"""
    
    def __init__(self):
        super().__init__()
        self.file_data = []  # 存儲文件信息的列表
        self.init_ui()
        
    def init_ui(self):
        """初始化用戶界面"""
        self.setWindowTitle("文件夾文件名提取工具")
        self.setGeometry(100, 100, 800, 600)
        
        # 創(chuàng)建中央部件
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        
        # 創(chuàng)建布局
        layout = QVBoxLayout(central_widget)
        
        # 標(biāo)題標(biāo)簽
        title_label = QLabel("文件夾文件名提取工具\(yùn)n快捷方式無效")
        title_label.setAlignment(Qt.AlignCenter)
        title_label.setStyleSheet("font-size: 18px; font-weight: bold; margin: 10px;")
        layout.addWidget(title_label)
        
        # 拖拽區(qū)域
        self.file_list_widget = FileListWidget()
        self.file_list_widget.setMinimumHeight(200)
        self.file_list_widget.setStyleSheet("""
            QTextEdit {
                border: 2px dashed #aaa;
                border-radius: 10px;
                background-color: #f9f9f9;
                font-size: 14px;
                padding: 10px;
            }
        """)
        layout.addWidget(self.file_list_widget)
        
        # 按鈕布局
        button_layout = QHBoxLayout()
        
        # 獲取文件名按鈕
        self.get_files_btn = QPushButton("獲取文件名")
        self.get_files_btn.setStyleSheet("""
            QPushButton {
                background-color: #4CAF50;
                color: white;
                border: none;
                padding: 10px 20px;
                font-size: 14px;
                border-radius: 5px;
            }
            QPushButton:hover {
                background-color: #45a049;
            }
        """)
        self.get_files_btn.clicked.connect(self.get_files)
        button_layout.addWidget(self.get_files_btn)
        
        # 導(dǎo)出Excel按鈕
        self.export_btn = QPushButton("導(dǎo)出Excel")
        self.export_btn.setStyleSheet("""
            QPushButton {
                background-color: #2196F3;
                color: white;
                border: none;
                padding: 10px 20px;
                font-size: 14px;
                border-radius: 5px;
            }
            QPushButton:hover {
                background-color: #1976D2;
            }
        """)
        self.export_btn.clicked.connect(self.export_to_excel)
        self.export_btn.setEnabled(False)  # 初始狀態(tài)禁用
        button_layout.addWidget(self.export_btn)
        
        layout.addLayout(button_layout)
        
        # 結(jié)果顯示區(qū)域
        self.result_text = QTextEdit()
        self.result_text.setReadOnly(True)
        self.result_text.setPlaceholderText("文件列表將在這里顯示...")
        layout.addWidget(self.result_text)
        
    def get_all_files(self, folder_path):
        """遞歸獲取文件夾中的所有文件"""
        file_list = []
        
        try:
            for root, dirs, files in os.walk(folder_path):
                # 獲取相對于根文件夾的路徑
                relative_root = os.path.relpath(root, folder_path)
                if relative_root == '.':
                    relative_root = '根目錄'
                
                # 添加文件信息
                for file in files:
                    file_list.append({
                        '目錄': relative_root,
                        '文件名': file
                    })
                    
        except Exception as e:
            QMessageBox.critical(self, "錯(cuò)誤", f"讀取文件夾時(shí)出錯(cuò): {str(e)}")
            return []
            
        return file_list
    
    def get_files(self):
        """獲取文件名按鈕點(diǎn)擊事件"""
        if not self.file_list_widget.folder_path:
            QMessageBox.warning(self, "警告", "請先拖入一個(gè)文件夾!")
            return
            
        # 獲取所有文件
        self.file_data = self.get_all_files(self.file_list_widget.folder_path)
        
        if not self.file_data:
            QMessageBox.information(self, "信息", "該文件夾中沒有找到任何文件。")
            return
            
        # 顯示結(jié)果
        result_text = f"共找到 {len(self.file_data)} 個(gè)文件:\n\n"
        
        # 按目錄分組顯示
        current_dir = None
        for item in self.file_data:
            if item['目錄'] != current_dir:
                current_dir = item['目錄']
                result_text += f"\n?? {current_dir}:\n"
            result_text += f"  ?? {item['文件名']}\n"
            
        self.result_text.setText(result_text)
        self.export_btn.setEnabled(True)  # 啟用導(dǎo)出按鈕
        
    def export_to_excel(self):
        """導(dǎo)出到Excel文件"""
        if not self.file_data:
            QMessageBox.warning(self, "警告", "沒有數(shù)據(jù)可以導(dǎo)出!")
            return
            
        # 選擇保存位置
        file_path, _ = QFileDialog.getSaveFileName(
            self, 
            "保存Excel文件", 
            "文件列表.xlsx", 
            "Excel文件 (*.xlsx);;所有文件 (*)"
        )
        
        if not file_path:
            return
            
        try:
            # 創(chuàng)建DataFrame
            df = pd.DataFrame(self.file_data)
            
            # 導(dǎo)出到Excel
            df.to_excel(file_path, index=False, sheet_name='文件列表')
            
            QMessageBox.information(
                self, 
                "成功", 
                f"文件已成功導(dǎo)出到:\n{file_path}\n\n共導(dǎo)出 {len(self.file_data)} 個(gè)文件記錄。"
            )
            
        except Exception as e:
            QMessageBox.critical(self, "錯(cuò)誤", f"導(dǎo)出Excel時(shí)出錯(cuò): {str(e)}")


def main():
    """主函數(shù)"""
    app = QApplication(sys.argv)
    
    # 設(shè)置應(yīng)用程序樣式
    app.setStyleSheet("""
        QMainWindow {
            background-color: #f0f0f0;
        }
        QLabel {
            color: #333;
        }
        QTextEdit {
            background-color: white;
            border: 1px solid #ddd;
            border-radius: 5px;
            font-family: 'Microsoft YaHei', Arial, sans-serif;
        }
    """)
    
    window = MainWindow()
    window.show()
    
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

使用指南

安裝依賴

pip install PyQt5 pandas openpyxl

運(yùn)行應(yīng)用

python main.py

操作步驟

  • 選擇文件夾:將目標(biāo)文件夾拖拽到應(yīng)用的拖拽區(qū)域
  • 獲取文件列表:點(diǎn)擊"獲取文件名"按鈕開始掃描
  • 查看結(jié)果:在結(jié)果顯示區(qū)域查看文件列表
  • 導(dǎo)出數(shù)據(jù):點(diǎn)擊"導(dǎo)出Excel"按鈕保存結(jié)果

注意事項(xiàng)

  • 僅支持文件夾拖拽,不支持單個(gè)文件
  • 快捷方式無效,需要拖拽實(shí)際文件夾
  • 大型文件夾可能需要較長處理時(shí)間

技術(shù)亮點(diǎn)

1. 跨平臺拖拽兼容性

通過實(shí)現(xiàn)dragMoveEvent方法,確保在Windows平臺上的拖拽操作穩(wěn)定性:

def dragMoveEvent(self, event):
    if event.mimeData().hasUrls():
        for url in event.mimeData().urls():
            if url.isLocalFile() and os.path.isdir(url.toLocalFile()):
                event.setDropAction(Qt.CopyAction)
                event.accept()
                return
    event.ignore()

2. 健壯的錯(cuò)誤處理

  • 文件訪問權(quán)限檢查
  • 路徑有效性驗(yàn)證
  • 用戶友好的錯(cuò)誤提示

3. 內(nèi)存優(yōu)化

  • 使用生成器模式處理大量文件
  • 及時(shí)釋放不需要的數(shù)據(jù)結(jié)構(gòu)
  • 避免重復(fù)加載文件信息

4. 調(diào)試支持

內(nèi)置詳細(xì)的調(diào)試日志輸出,便于問題排查:

print(f"檢測到URLs: {len(urls)}個(gè)")
print(f"檢查路徑: {file_path}")
print(f"成功選擇文件夾: {dropped_folder}")

擴(kuò)展功能建議

短期優(yōu)化

  • 添加文件類型過濾功能
  • 支持多種導(dǎo)出格式(CSV、JSON)
  • 添加文件大小統(tǒng)計(jì)
  • 實(shí)現(xiàn)進(jìn)度條顯示

長期規(guī)劃

  • 支持網(wǎng)絡(luò)文件夾
  • 添加文件預(yù)覽功能
  • 實(shí)現(xiàn)批量重命名
  • 集成云存儲服務(wù)

項(xiàng)目結(jié)構(gòu)

文件夾文件名提取工具/
├── main.py              # 主程序文件
├── requirements.txt     # 依賴包列表
├── README.md           # 項(xiàng)目說明
└── blog.md             # 技術(shù)博客(本文檔)

總結(jié)

這個(gè)文件夾文件名提取工具展示了PyQt5在桌面應(yīng)用開發(fā)中的強(qiáng)大能力。通過合理的架構(gòu)設(shè)計(jì)、用戶友好的界面和健壯的功能實(shí)現(xiàn),為用戶提供了一個(gè)實(shí)用的文件管理工具。

項(xiàng)目的技術(shù)特點(diǎn)包括:

  • 現(xiàn)代化的GUI設(shè)計(jì):采用PyQt5構(gòu)建響應(yīng)式界面
  • 直觀的交互方式:支持拖拽操作,降低使用門檻
  • 完整的數(shù)據(jù)處理流程:從文件掃描到Excel導(dǎo)出的完整鏈路
  • 跨平臺兼容性:針對不同操作系統(tǒng)進(jìn)行了優(yōu)化

該項(xiàng)目不僅解決了實(shí)際的文件管理需求,也為PyQt5桌面應(yīng)用開發(fā)提供了一個(gè)很好的參考案例。無論是對于學(xué)習(xí)GUI編程的開發(fā)者,還是需要文件管理工具的用戶,都具有很好的參考價(jià)值。

以上就是python開發(fā)一個(gè)文件夾文件名提取工具(附完整代碼)的詳細(xì)內(nèi)容,更多關(guān)于python文件名提取的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python制作一個(gè)PPT文本提取工具

    Python制作一個(gè)PPT文本提取工具

    這篇文章主要為大家詳細(xì)介紹了如何使用Python開發(fā)一個(gè)帶圖形界面的PPT文本提取工具,可以從PPTX文件中提取所有文本內(nèi)容,有需要的小伙伴可以了解下
    2025-01-01
  • python中有幫助函數(shù)嗎

    python中有幫助函數(shù)嗎

    在本篇文章里小編給大家分享的是一篇關(guān)于python幫助函數(shù)詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • 講解Python中運(yùn)算符使用時(shí)的優(yōu)先級

    講解Python中運(yùn)算符使用時(shí)的優(yōu)先級

    這篇文章主要介紹了講解Python中運(yùn)算符使用時(shí)的優(yōu)先級,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • python編程webpy框架模板之def with學(xué)習(xí)

    python編程webpy框架模板之def with學(xué)習(xí)

    這篇文章主要為大家介紹了python編程web.py框架模板之def with的學(xué)習(xí)有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • Python計(jì)算序列相似度的算法實(shí)例

    Python計(jì)算序列相似度的算法實(shí)例

    這篇文章主要介紹了Python計(jì)算序列相似度的算法實(shí)例,求兩個(gè)序列轉(zhuǎn)換的最少交換步驟和最小交換距離,本文提供了部分實(shí)現(xiàn)代碼與解決思路,對開發(fā)非常有幫助,需要的朋友可以參考下
    2023-07-07
  • python使用opencv按一定間隔截取視頻幀

    python使用opencv按一定間隔截取視頻幀

    這篇文章主要為大家詳細(xì)介紹了python使用opencv按一定間隔截取視頻幀,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Windows和Linux下Python輸出彩色文字的方法教程

    Windows和Linux下Python輸出彩色文字的方法教程

    這篇文章主要介紹了在Windows和Linux中Python輸出彩色文字的方法,通過設(shè)置彩色文字給大家更醒目的效果,文中給出了詳細(xì)的介紹和示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • 如何基于Python制作有道翻譯小工具

    如何基于Python制作有道翻譯小工具

    這篇文章主要介紹了如何基于Python制作有道翻譯小工具,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 手把手教你如何使python變?yōu)榭蓤?zhí)行文件

    手把手教你如何使python變?yōu)榭蓤?zhí)行文件

    對于exe可執(zhí)行文件,相信大家都不陌生,下面這篇文章主要給大家介紹了關(guān)于如何使python變?yōu)榭蓤?zhí)行文件的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Jupyter Lab設(shè)置切換虛擬環(huán)境的實(shí)現(xiàn)步驟

    Jupyter Lab設(shè)置切換虛擬環(huán)境的實(shí)現(xiàn)步驟

    本文主要介紹了Jupyter Lab設(shè)置切換虛擬環(huán)境的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02

最新評論

平湖市| 扶沟县| 司法| 邵武市| 河西区| 大同县| 湘阴县| 万宁市| 桃江县| 湘阴县| 靖江市| 垦利县| 文登市| 河曲县| 岢岚县| 尉犁县| 台东县| 香格里拉县| 商河县| 扶风县| 瓮安县| 阳江市| 武汉市| 镇江市| 贵德县| 淮北市| 万年县| 友谊县| 子长县| 万宁市| 布尔津县| 志丹县| 扬州市| 富源县| 永嘉县| 明星| 鹿邑县| 九台市| 六枝特区| 东乌珠穆沁旗| 仁布县|