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

Python+PyQt實(shí)現(xiàn)一鍵生成文件目錄

 更新時(shí)間:2025年07月28日 09:25:35   作者:Goona_  
這篇文章主要為大家詳細(xì)介紹了Python如何結(jié)合PyQt實(shí)現(xiàn)一鍵生成文件目錄,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

一、引言

因辦公要求,經(jīng)常需要統(tǒng)計(jì)“底層人員”上交的各種文件,人數(shù)少還好說(shuō),人多就是一個(gè)稍微復(fù)雜的問(wèn)題了。當(dāng)然這個(gè)問(wèn)題也可以通過(guò)“暴 力”的方式解決,但是工作效率會(huì)大大折扣。所以,為極大提高辦公效率,就謀生了這個(gè)想法。

二、GUI界面設(shè)計(jì)

使用PyQt5進(jìn)行界面的搭建,最終界面如下:

1.第一步:確定被讀取文件所在的文件夾。

2.第二步:確定最終讀取結(jié)果是否需要保留其文件類(lèi)型(即后綴)??筛鶕?jù)個(gè)人需求而定,以我的工作經(jīng)驗(yàn)來(lái)說(shuō),第二種“不保留”是最常見(jiàn)的,即只獲取文件名稱(chēng)。

3.第三步:選擇最終讀取結(jié)果存放的文件類(lèi)型,下拉列表中包含了最常用的五種文件類(lèi)型:txt文本文件、.doc文檔、.docx文檔、.xls工作表和.xlsx工作表(如下圖所示)。若跳過(guò)此步驟,默認(rèn)保存文件類(lèi)型為txt文本文件。

4.最后單擊“開(kāi)始讀取”按鈕,即可成功獲取當(dāng)前目錄下所有文件的名稱(chēng)并存儲(chǔ)在步驟三所選的文件類(lèi)型中。若還想繼續(xù)讀取其他文件名稱(chēng),從步驟一開(kāi)始重復(fù)即可;否則,單擊“退出系統(tǒng)”即可退出程序即可。

最后附上通過(guò)pyuic5產(chǎn)生的GUI界面代碼jiemian.py:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'jiemian.ui'
#
# Created by: PyQt5 UI code generator 5.15.11
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.setEnabled(True)
        Form.resize(460, 500)
        Form.setMinimumSize(QtCore.QSize(460, 500))
        Form.setMaximumSize(QtCore.QSize(460, 500))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/image1.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        Form.setWindowIcon(icon)
        self.groupBox = QtWidgets.QGroupBox(Form)
        self.groupBox.setGeometry(QtCore.QRect(40, 180, 381, 61))
        self.groupBox.setAutoFillBackground(False)
        self.groupBox.setTitle("")
        self.groupBox.setFlat(False)
        self.groupBox.setObjectName("groupBox")
        self.radioButton = QtWidgets.QRadioButton(self.groupBox)
        self.radioButton.setGeometry(QtCore.QRect(90, 40, 81, 16))
        self.radioButton.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.radioButton.setObjectName("radioButton")
        self.label_2 = QtWidgets.QLabel(self.groupBox)
        self.label_2.setGeometry(QtCore.QRect(20, 10, 281, 21))
        font = QtGui.QFont()
        font.setFamily("Adobe Arabic")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.radioButton_2 = QtWidgets.QRadioButton(self.groupBox)
        self.radioButton_2.setGeometry(QtCore.QRect(200, 40, 81, 16))
        self.radioButton_2.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.radioButton_2.setObjectName("radioButton_2")
        self.label = QtWidgets.QLabel(self.groupBox)
        self.label.setGeometry(QtCore.QRect(290, 0, 201, 41))
        font = QtGui.QFont()
        font.setFamily("Adobe Arabic")
        font.setPointSize(20)
        font.setBold(False)
        font.setWeight(50)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.groupBox_2 = QtWidgets.QGroupBox(Form)
        self.groupBox_2.setGeometry(QtCore.QRect(40, 270, 381, 71))
        self.groupBox_2.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.groupBox_2.setTitle("")
        self.groupBox_2.setObjectName("groupBox_2")
        self.label_4 = QtWidgets.QLabel(self.groupBox_2)
        self.label_4.setGeometry(QtCore.QRect(20, 10, 311, 21))
        font = QtGui.QFont()
        font.setFamily("Adobe Arabic")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.label_4.setFont(font)
        self.label_4.setObjectName("label_4")
        self.comboBox = QtWidgets.QComboBox(self.groupBox_2)
        self.comboBox.setGeometry(QtCore.QRect(60, 40, 261, 22))
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.comboBox.addItem("")
        self.label_5 = QtWidgets.QLabel(Form)
        self.label_5.setGeometry(QtCore.QRect(270, 20, 141, 31))
        font = QtGui.QFont()
        font.setFamily("Adobe Arabic")
        font.setPointSize(16)
        self.label_5.setFont(font)
        self.label_5.setObjectName("label_5")
        self.groupBox_5 = QtWidgets.QGroupBox(Form)
        self.groupBox_5.setGeometry(QtCore.QRect(40, 370, 381, 71))
        self.groupBox_5.setTitle("")
        self.groupBox_5.setObjectName("groupBox_5")
        self.label_9 = QtWidgets.QLabel(self.groupBox_5)
        self.label_9.setGeometry(QtCore.QRect(20, 10, 231, 21))
        font = QtGui.QFont()
        font.setFamily("Adobe Arabic")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.label_9.setFont(font)
        self.label_9.setObjectName("label_9")
        self.pushButton_2 = QtWidgets.QPushButton(self.groupBox_5)
        self.pushButton_2.setGeometry(QtCore.QRect(200, 40, 121, 23))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton = QtWidgets.QPushButton(self.groupBox_5)
        self.pushButton.setGeometry(QtCore.QRect(60, 40, 121, 23))
        self.pushButton.setObjectName("pushButton")
        self.label_8 = QtWidgets.QLabel(Form)
        self.label_8.setGeometry(QtCore.QRect(50, 20, 251, 31))
        font = QtGui.QFont()
        font.setFamily("Adobe Arabic")
        font.setPointSize(18)
        font.setBold(False)
        font.setWeight(50)
        self.label_8.setFont(font)
        self.label_8.setObjectName("label_8")
        self.label_10 = QtWidgets.QLabel(Form)
        self.label_10.setGeometry(QtCore.QRect(350, 10, 71, 51))
        self.label_10.setText("")
        self.label_10.setPixmap(QtGui.QPixmap(":/image1.png"))
        self.label_10.setObjectName("label_10")
        self.label_6 = QtWidgets.QLabel(Form)
        self.label_6.setGeometry(QtCore.QRect(60, 90, 311, 21))
        font = QtGui.QFont()
        font.setFamily("Adobe Arabic")
        font.setPointSize(12)
        font.setBold(False)
        font.setWeight(50)
        self.label_6.setFont(font)
        self.label_6.setObjectName("label_6")
        self.pushButton_3 = QtWidgets.QPushButton(Form)
        self.pushButton_3.setGeometry(QtCore.QRect(100, 120, 261, 23))
        self.pushButton_3.setObjectName("pushButton_3")
        self.groupBox_3 = QtWidgets.QGroupBox(Form)
        self.groupBox_3.setGeometry(QtCore.QRect(40, 80, 381, 80))
        self.groupBox_3.setTitle("")
        self.groupBox_3.setObjectName("groupBox_3")
        self.groupBox_3.raise_()
        self.groupBox_5.raise_()
        self.groupBox_2.raise_()
        self.groupBox.raise_()
        self.label_5.raise_()
        self.label_8.raise_()
        self.label_10.raise_()
        self.label_6.raise_()
        self.pushButton_3.raise_()

        self.retranslateUi(Form)
        self.pushButton_2.clicked.connect(Form.close) # type: ignore
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Read_file"))
        self.radioButton.setText(_translate("Form", "保留"))
        self.label_2.setText(_translate("Form", "二、文件名稱(chēng)是否需要保留其類(lèi)型后綴"))
        self.radioButton_2.setText(_translate("Form", "不保留"))
        self.label.setText(_translate("Form", "(.XXX):"))
        self.label_4.setText(_translate("Form", "三、請(qǐng)選擇獲取結(jié)果最終存放的文件類(lèi)型:"))
        self.comboBox.setItemText(0, _translate("Form", "文本文檔.txt"))
        self.comboBox.setItemText(1, _translate("Form", "DOC文檔.doc"))
        self.comboBox.setItemText(2, _translate("Form", "DCOX文檔.docx"))
        self.comboBox.setItemText(3, _translate("Form", "XLS工作表.xls"))
        self.comboBox.setItemText(4, _translate("Form", "XLSX工作表.xlsx"))
        self.label_5.setText(_translate("Form", "Designed By"))
        self.label_9.setText(_translate("Form", "四、請(qǐng)選擇以下操作命令:"))
        self.pushButton_2.setText(_translate("Form", "退出系統(tǒng)"))
        self.pushButton.setText(_translate("Form", "開(kāi)始讀取"))
        self.label_8.setText(_translate("Form", "文件名稱(chēng)獲取系統(tǒng)"))
        self.label_6.setText(_translate("Form", "一、請(qǐng)選擇待獲取文件所在的文件夾:"))
        self.pushButton_3.setText(_translate("Form", "點(diǎn)擊選擇待讀取文件所在的文件夾"))
import ziyuan_rc //用于個(gè)人logo或圖標(biāo)顯示,可根據(jù)個(gè)人需求設(shè)置,也可注掉

三、程序詳解

1.導(dǎo)入所需模塊

import sys,os
from jiemian import *
from PyQt5.QtWidgets import QApplication, QWidget

from docx import Document
from openpyxl import Workbook

2.調(diào)整窗口大小

# 保持窗口大小和qtdesigner中的一致
from PyQt5 import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)

這一步要額外注意:當(dāng)在pyqt5中的設(shè)計(jì)界面與使用pyuic生成的界面大小不一致時(shí),需要導(dǎo)入Qtcore模塊實(shí)現(xiàn)自適應(yīng)縮放。

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

生成界面

加上上述代碼后,兩者才會(huì)變得一致。

3.彈出選擇文件路徑對(duì)話(huà)框

def lujing(self):
    filepath = QtWidgets.QFileDialog.getExistingDirectory(self, "選取存放待讀取文件的文件夾")  # 獲取文件夾的路徑
    if filepath:
        self.path = filepath
        self.lujing_flag = True

此def對(duì)應(yīng)著步驟一。最后設(shè)立一個(gè)標(biāo)志位lujing_flag,以此來(lái)判斷操作者是否完成了步驟一(后續(xù)會(huì)用到)。

對(duì)話(huà)框效果如下:

4.對(duì)后綴的處理

def xuanze(self):
    filelist = os.listdir(self.path)
    if self.radioButton.isChecked(): # 保留后綴
        self.result_list = filelist
    else:
        if self.radioButton_2.isChecked():
            # 去掉待命名文件的格式后綴
            baoliu_list = []  # 存放最終讀取結(jié)果
            for filename in filelist:
                for zifu in filename:
                    if zifu == ".":
                        dian_suoyin = filename.index(zifu)
                        baoliu_list.append(filename[:dian_suoyin])
                        break
            self.result_list = baoliu_list

如果用戶(hù)選擇的是保留后綴,則將filelist的內(nèi)容賦給result_list;否則,通過(guò)循環(huán)定位后綴標(biāo)識(shí)符“.”在對(duì)應(yīng)文件名中的索引,利用此索引對(duì)此文件名依次切片,最終獲得純文件名(不保留后綴)。

5.寫(xiě)入并生成存儲(chǔ)文件

def shengcheng(self):
    if self.lujing_flag == True:
        if (self.radioButton.isChecked()==False) and (self.radioButton_2.isChecked()==False):
            QtWidgets.QMessageBox.critical(self, '提示', '請(qǐng)完成步驟二!')
        else:
            selected_index = self.comboBox.currentIndex()
            wenjian_shengcheng(selected_index, self.result_list)
            QtWidgets.QMessageBox.information(self, '成功', '文件名稱(chēng)讀取結(jié)果保存在當(dāng)前目錄下,請(qǐng)查看!')
    else:
        QtWidgets.QMessageBox.critical(self, '提示', '請(qǐng)完成步驟一!')

依次對(duì)步驟完成情況進(jìn)行判斷,并通過(guò)自定義函數(shù)wenjian_shengcheng寫(xiě)入并生成文件。

自定義函數(shù)wenjian_shengcheng如下:

def wenjian_shengcheng(suoyin, content):
    name = "read_result"
    # 產(chǎn)生不同種類(lèi)的文件
    match suoyin:
        case 0: # 生成文本文檔txt
            with open(name+'.txt','w') as f:
                for item in content:
                    f.write(f"{item}\n")
        case 1: # 生成doc文檔
            doc = Document()
            for item in content:
                paragraph = doc.add_paragraph(item)
            doc.save(name+'.doc')
        case 2: # 生成docx文檔
            doc = Document()
            for item in content:
                paragraph = doc.add_paragraph(item)
            doc.save(name+'.docx')
        case 3: # 生成xls工作表
            wb = Workbook()
            ws = wb.active
            for row in range(1, len(content) + 1):
                ws.cell(row=row, column=1, value=content[row - 1])
            wb.save(name+'.xls')
        case 4: # 生成xlsx工作表
            wb = Workbook()
            ws = wb.active
            for row in range(1, len(content) + 1):
                ws.cell(row=row, column=1, value=content[row - 1])
            wb.save(name+'.xlsx')

四、總程序代碼Read_file.py

import sys,os
from jiemian import *
from PyQt5.QtWidgets import QApplication, QWidget

from docx import Document
from openpyxl import Workbook
# 保持窗口大小和qtdesigner中的一致
from PyQt5 import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)

class login_interface(QWidget, Ui_Form):
    def __init__(self):
        super(QWidget, self).__init__()
        self.setupUi(self)

        # 綁定信號(hào)
        self.radioButton.clicked.connect(self.xuanze)
        self.radioButton_2.clicked.connect(self.xuanze)
        self.pushButton.clicked.connect(self.shengcheng)
        self.pushButton_3.clicked.connect(self.lujing)

        self.result_list = [] # 在__init__構(gòu)造函數(shù)中定義,通過(guò)self關(guān)鍵字訪問(wèn),每個(gè)實(shí)例擁有獨(dú)立副本
        self.path = ""

        self.lujing_flag = False

    def lujing(self):
        filepath = QtWidgets.QFileDialog.getExistingDirectory(self, "選取存放待讀取文件的文件夾")  # 獲取文件夾的路徑
        if filepath:
            self.path = filepath
            self.lujing_flag = True

    def xuanze(self):
        filelist = os.listdir(self.path)
        if self.radioButton.isChecked(): # 保留后綴
            self.result_list = filelist
        else:
            if self.radioButton_2.isChecked():
                # 去掉待命名文件的格式后綴
                baoliu_list = []  # 存放最終讀取結(jié)果
                for filename in filelist:
                    for zifu in filename:
                        if zifu == ".":
                            dian_suoyin = filename.index(zifu)
                            baoliu_list.append(filename[:dian_suoyin])
                            break
                self.result_list = baoliu_list

    def shengcheng(self):
        if self.lujing_flag == True:
            if (self.radioButton.isChecked()==False) and (self.radioButton_2.isChecked()==False):
                QtWidgets.QMessageBox.critical(self, '提示', '請(qǐng)完成步驟二!')
            else:
                selected_index = self.comboBox.currentIndex()
                wenjian_shengcheng(selected_index, self.result_list)
                QtWidgets.QMessageBox.information(self, '成功', '文件名稱(chēng)讀取結(jié)果保存在當(dāng)前目錄下,請(qǐng)查看!')
        else:
            QtWidgets.QMessageBox.critical(self, '提示', '請(qǐng)完成步驟一!')

def wenjian_shengcheng(suoyin, content):
    name = "read_result"
    # 產(chǎn)生不同種類(lèi)的文件
    match suoyin:
        case 0: # 生成文本文檔txt
            with open(name+'.txt','w') as f:
                for item in content:
                    f.write(f"{item}\n")
        case 1: # 生成doc文檔
            doc = Document()
            for item in content:
                paragraph = doc.add_paragraph(item)
            doc.save(name+'.doc')
        case 2: # 生成docx文檔
            doc = Document()
            for item in content:
                paragraph = doc.add_paragraph(item)
            doc.save(name+'.docx')
        case 3: # 生成xls工作表
            wb = Workbook()
            ws = wb.active
            for row in range(1, len(content) + 1):
                ws.cell(row=row, column=1, value=content[row - 1])
            wb.save(name+'.xls')
        case 4: # 生成xlsx工作表
            wb = Workbook()
            ws = wb.active
            for row in range(1, len(content) + 1):
                ws.cell(row=row, column=1, value=content[row - 1])
            wb.save(name+'.xlsx')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = login_interface()
    w.show()
    sys.exit(app.exec_())

到此這篇關(guān)于Python+PyQt實(shí)現(xiàn)一鍵生成文件目錄的文章就介紹到這了,更多相關(guān)Python生成文件目錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python指定路徑斜杠與反斜杠遇到的問(wèn)題

    python指定路徑斜杠與反斜杠遇到的問(wèn)題

    這篇文章主要介紹了python指定路徑斜杠與反斜杠遇到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 詳解Python yaml模塊

    詳解Python yaml模塊

    這篇文章主要介紹了Python yaml模塊的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-09-09
  • python繪圖之坐標(biāo)軸的超詳細(xì)講解

    python繪圖之坐標(biāo)軸的超詳細(xì)講解

    在使用matplotlib模塊時(shí)畫(huà)坐標(biāo)圖時(shí),往往需要對(duì)坐標(biāo)軸設(shè)置很多參數(shù),這些參數(shù)包括橫縱坐標(biāo)軸范圍、坐標(biāo)軸刻度大小、坐標(biāo)軸名稱(chēng)等,下面這篇文章主要給大家介紹了關(guān)于python繪圖之坐標(biāo)軸的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • python 采集中文亂碼問(wèn)題的完美解決方法

    python 采集中文亂碼問(wèn)題的完美解決方法

    下面小編就為大家?guī)?lái)一篇python 采集中文亂碼問(wèn)題的完美解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • python 模擬登錄B站的示例代碼

    python 模擬登錄B站的示例代碼

    這篇文章主要介紹了python 模擬登錄B站的示例代碼,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • 如何通過(guò)Python實(shí)現(xiàn)RabbitMQ延遲隊(duì)列

    如何通過(guò)Python實(shí)現(xiàn)RabbitMQ延遲隊(duì)列

    這篇文章主要介紹了如何通過(guò)Python實(shí)現(xiàn)RabbitMQ延遲隊(duì)列,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • scrapy與selenium結(jié)合爬取數(shù)據(jù)(爬取動(dòng)態(tài)網(wǎng)站)的示例代碼

    scrapy與selenium結(jié)合爬取數(shù)據(jù)(爬取動(dòng)態(tài)網(wǎng)站)的示例代碼

    這篇文章主要介紹了scrapy與selenium結(jié)合爬取數(shù)據(jù)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Pandas中inf值替換的方法

    Pandas中inf值替換的方法

    本文主要介紹了Pandas中inf值替換的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Python爬蟲(chóng)爬取全球疫情數(shù)據(jù)并存儲(chǔ)到mysql數(shù)據(jù)庫(kù)的步驟

    Python爬蟲(chóng)爬取全球疫情數(shù)據(jù)并存儲(chǔ)到mysql數(shù)據(jù)庫(kù)的步驟

    這篇文章主要介紹了Python爬蟲(chóng)爬取全球疫情數(shù)據(jù)并存儲(chǔ)到mysql數(shù)據(jù)庫(kù)的步驟,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • 使用Python批量生成PPT版榮譽(yù)證書(shū)的示例代碼

    使用Python批量生成PPT版榮譽(yù)證書(shū)的示例代碼

    使用Python處理PPT文件通常需要使用第三方庫(kù)來(lái)簡(jiǎn)化對(duì)PPT文件的讀取、寫(xiě)入和修改操作,本文將給大家介紹一個(gè)小案例,使用Python批量生成PPT版榮譽(yù)證書(shū),感興趣的同學(xué)跟著小編一起來(lái)看看吧
    2023-08-08

最新評(píng)論

康定县| 五家渠市| 新蔡县| 桂林市| 碌曲县| 墨江| 社旗县| 孟津县| 远安县| 北辰区| 哈尔滨市| 永安市| 墨江| 东宁县| 哈巴河县| 金堂县| 阿鲁科尔沁旗| 嵊州市| 盈江县| 汶上县| 拉萨市| 施甸县| 哈巴河县| 讷河市| 栾川县| 施秉县| 安新县| 万山特区| 旬邑县| 澎湖县| 育儿| 探索| 根河市| 大埔区| 湘潭市| 桐庐县| 萍乡市| 雅安市| 新巴尔虎左旗| 南汇区| 邢台县|