Python+PyQt實現(xiàn)指定名稱文件批量生成器
一、引言
因辦公要求,經(jīng)常需要批量創(chuàng)建各種文件(夾),且文件(夾)名稱已被指定(如為全公司/部門所有工作人員創(chuàng)建一個以本人姓名命名的文件夾,用于存放個人相關資料等)。人數(shù)少還好說,人數(shù)大就是一個稍微復雜的問題了。當然這個問題也可以通過“暴力”的方式解決(具體怎么“暴力”,我就不多贅述了),但是工作效率會大大折扣。所以,為極大提高辦公效率,就謀生了這個想法。
二、GUI界面設計
使用PyQt5進行界面的搭建,最終界面如下:

1.第一步:確定被批量創(chuàng)建文件(夾)的名稱
通過兩個單選按鈕來實現(xiàn):前者記為radio button,表示批量生成的文件(夾)具有一定的規(guī)律性,即label中的提示:文件名稱為按順序排列的數(shù)字、字母等(如批量生成100個文件(夾),文件(夾)的名稱是1-100),單擊后radio button后,會顯示出兩個line edit,可以分別輸入文件(夾)名稱的起始值和終止值,而且右邊的無規(guī)律性提示也會消失;

后者記為radio button2,表示批量生成的文件(夾)不具有一定的規(guī)律性,即label中的提示:文件名稱可自定義(如批量創(chuàng)建以“劉一”、“陳二”、“張三”、“李四”、“王五”、“趙六”、“孫七”、“周八”、“吳九”、“鄭十”......等為名稱的文件(夾)),單擊radio button2后,會顯示出一個text edit,默認值是“劉一”、“陳二”、“張三”、“李四”、“王五”、“趙六”,可以直接將其刪去,然后將想要的文件(夾)名稱輸入(粘貼)到text edit中即可,但要注意寫入要求:所有文件名稱按行排列(即每行僅有一個文件(夾)名),而且左邊的有規(guī)律性提示也會消失。

2.第二步:確定被批量創(chuàng)建的文件類型
默認是批量生成文件夾(也是最常用的),在下拉列表中還包含了文本文檔.txt、DOC文檔.doc、DOCX文檔.docx、PPT演示文稿.ppt、PPTX演示文稿.pptx、XLS工作表.xls、XLSX工作表.xlsx等多種類型。


3.第三步:批量創(chuàng)建所需的所有文件(夾)
點擊“開始生成”按鈕,即可秒秒鐘批量生成所需所有文件(夾)。當然,這里還放了“退出系統(tǒng)”的按鈕,供退出程序。


最后批量產(chǎn)生的文件(夾)如下:


可以看到,產(chǎn)生大量文件(夾)是一瞬間的事兒,哪怕再多都不在話下,也都可以秒秒鐘做到(為避免冗余性,批量產(chǎn)生其他文件類型這里就不做演示了)!
4.一些使用提示
在第二步選擇規(guī)律性文件名稱時,若輸入不符合要求,點擊“開始生成”按鈕,會有如下提示。






5.界面設計jiemian.py
最后附上通過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(800, 390)
Form.setMinimumSize(QtCore.QSize(800, 390))
Form.setMaximumSize(QtCore.QSize(800, 390))
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/image1.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
Form.setWindowIcon(icon)
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(40, 70, 201, 21))
font = QtGui.QFont()
font.setFamily("Adobe Arabic")
font.setPointSize(12)
font.setBold(False)
font.setWeight(50)
self.label.setFont(font)
self.label.setObjectName("label")
self.label_4 = QtWidgets.QLabel(Form)
self.label_4.setGeometry(QtCore.QRect(40, 320, 261, 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(Form)
self.comboBox.setGeometry(QtCore.QRect(130, 350, 201, 22))
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.groupBox = QtWidgets.QGroupBox(Form)
self.groupBox.setGeometry(QtCore.QRect(30, 60, 751, 241))
self.groupBox.setAutoFillBackground(False)
self.groupBox.setTitle("")
self.groupBox.setFlat(False)
self.groupBox.setObjectName("groupBox")
self.label_3 = QtWidgets.QLabel(self.groupBox)
self.label_3.setGeometry(QtCore.QRect(100, 180, 91, 16))
self.label_3.setObjectName("label_3")
self.label_2 = QtWidgets.QLabel(self.groupBox)
self.label_2.setEnabled(True)
self.label_2.setGeometry(QtCore.QRect(100, 120, 91, 16))
self.label_2.setAutoFillBackground(False)
self.label_2.setInputMethodHints(QtCore.Qt.ImhNone)
self.label_2.setObjectName("label_2")
self.lineEdit_2 = QtWidgets.QLineEdit(self.groupBox)
self.lineEdit_2.setGeometry(QtCore.QRect(100, 200, 113, 20))
self.lineEdit_2.setObjectName("lineEdit_2")
self.lineEdit = QtWidgets.QLineEdit(self.groupBox)
self.lineEdit.setGeometry(QtCore.QRect(100, 140, 113, 20))
self.lineEdit.setObjectName("lineEdit")
self.textEdit = QtWidgets.QTextEdit(self.groupBox)
self.textEdit.setGeometry(QtCore.QRect(490, 70, 221, 151))
self.textEdit.setObjectName("textEdit")
self.label_6 = QtWidgets.QLabel(self.groupBox)
self.label_6.setGeometry(QtCore.QRect(70, 80, 221, 31))
self.label_6.setObjectName("label_6")
self.radioButton_2 = QtWidgets.QRadioButton(self.groupBox)
self.radioButton_2.setGeometry(QtCore.QRect(310, 50, 261, 16))
self.radioButton_2.setObjectName("radioButton_2")
self.radioButton = QtWidgets.QRadioButton(self.groupBox)
self.radioButton.setGeometry(QtCore.QRect(50, 50, 171, 16))
self.radioButton.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
self.radioButton.setObjectName("radioButton")
self.label_7 = QtWidgets.QLabel(self.groupBox)
self.label_7.setGeometry(QtCore.QRect(330, 80, 151, 111))
self.label_7.setObjectName("label_7")
self.groupBox_3 = QtWidgets.QGroupBox(self.groupBox)
self.groupBox_3.setGeometry(QtCore.QRect(40, 40, 241, 191))
self.groupBox_3.setTitle("")
self.groupBox_3.setObjectName("groupBox_3")
self.groupBox_4 = QtWidgets.QGroupBox(self.groupBox)
self.groupBox_4.setGeometry(QtCore.QRect(300, 40, 431, 191))
self.groupBox_4.setTitle("")
self.groupBox_4.setObjectName("groupBox_4")
self.groupBox_4.raise_()
self.groupBox_3.raise_()
self.label_3.raise_()
self.label_2.raise_()
self.lineEdit_2.raise_()
self.lineEdit.raise_()
self.textEdit.raise_()
self.label_6.raise_()
self.radioButton_2.raise_()
self.radioButton.raise_()
self.label_7.raise_()
self.groupBox_2 = QtWidgets.QGroupBox(Form)
self.groupBox_2.setGeometry(QtCore.QRect(30, 310, 321, 71))
self.groupBox_2.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
self.groupBox_2.setTitle("")
self.groupBox_2.setObjectName("groupBox_2")
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(460, 350, 131, 23))
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(Form)
self.pushButton_2.setGeometry(QtCore.QRect(610, 350, 131, 23))
self.pushButton_2.setObjectName("pushButton_2")
self.label_5 = QtWidgets.QLabel(Form)
self.label_5.setGeometry(QtCore.QRect(490, 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(360, 310, 421, 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(10, 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.label_8 = QtWidgets.QLabel(Form)
self.label_8.setGeometry(QtCore.QRect(260, 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(570, 10, 71, 51))
self.label_10.setText("")
self.label_10.setPixmap(QtGui.QPixmap(":/image1.png"))
self.label_10.setObjectName("label_10")
self.groupBox_5.raise_()
self.groupBox_2.raise_()
self.groupBox.raise_()
self.label.raise_()
self.label_4.raise_()
self.comboBox.raise_()
self.pushButton.raise_()
self.pushButton_2.raise_()
self.label_5.raise_()
self.label_8.raise_()
self.label_10.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", "Batch_creation"))
self.label.setText(_translate("Form", "一、請選擇文件名稱類型:"))
self.label_4.setText(_translate("Form", "二、請選擇批量生成的文件類型:"))
self.comboBox.setItemText(0, _translate("Form", "文件夾"))
self.comboBox.setItemText(1, _translate("Form", "文本文檔.txt"))
self.comboBox.setItemText(2, _translate("Form", "DOC文檔.doc"))
self.comboBox.setItemText(3, _translate("Form", "DCOX文檔.docx"))
self.comboBox.setItemText(4, _translate("Form", "PPT演示文稿.ppt"))
self.comboBox.setItemText(5, _translate("Form", "PPTX演示文稿.pptx"))
self.comboBox.setItemText(6, _translate("Form", "XLS工作表.xls"))
self.comboBox.setItemText(7, _translate("Form", "XLSX工作表.xlsx"))
self.label_3.setText(_translate("Form", "請輸入終止值:"))
self.label_2.setText(_translate("Form", "請輸入起始值:"))
self.textEdit.setHtml(_translate("Form", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">劉一</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">陳二</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">張三</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">李四</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">王五</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">趙六</p></body></html>"))
self.label_6.setText(_translate("Form", "文件名稱為按順序排列的數(shù)字、字母等"))
self.radioButton_2.setText(_translate("Form", "文件名稱無規(guī)律"))
self.radioButton.setText(_translate("Form", "文件名稱有規(guī)律"))
self.label_7.setText(_translate("Form", "<html><head/><body><p>文件名稱可自定義,</p><p>將所有文件的名稱按行排列</p><p>(即每行僅有一個文件名),</p><p>復制粘貼到右框中即可</p></body></html>"))
self.pushButton.setText(_translate("Form", "開始生成"))
self.pushButton_2.setText(_translate("Form", "退出系統(tǒng)"))
self.label_5.setText(_translate("Form", "Designed By"))
self.label_9.setText(_translate("Form", "三、請選擇以下操作命令:"))
self.label_8.setText(_translate("Form", "文件批量生成系統(tǒng)"))
import ziyuan_rc
三、主要程序詳解
1.導入所需模塊
import sys,os from jiemian import * from PyQt5.QtWidgets import QApplication, QWidget from docx import Document from pptx import Presentation from openpyxl import Workbook # 保持窗口大小和qtdesigner中的一致 from PyQt5 import QtCore QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
不懂為啥需要導入Qtcore的,請看一鍵曝光:Python+PyQt實現(xiàn)的文件目錄。
2.對控件的顯示進行初始化設置
def __init__(self):
super(QWidget, self).__init__()
self.setupUi(self)
# 初始化設置控件的顯示狀態(tài)
self.label_2.setVisible(False)
self.label_3.setVisible(False)
self.label_6.setVisible(True)
self.label_7.setVisible(True)
self.lineEdit.setVisible(False)
self.lineEdit_2.setVisible(False)
self.textEdit.setVisible(False)
# 綁定信號
self.radioButton.clicked.connect(self.guilv_visible)
self.radioButton_2.clicked.connect(self.wuguilv_visible)
self.pushButton.clicked.connect(self.shengcheng)因為在步驟二中有radio button和radio button2可供選擇,也可在兩個單選按鈕中進行隨意切換,所以為方便后續(xù)的隨意切換,這里提前進行了visible的設置。
3.選擇性顯示與規(guī)律性相關的控件
def guilv_visible(self):
# 選擇性顯示與規(guī)律性相關的控件
if (self.radioButton.isChecked()) and (self.radioButton_2.isChecked()==False):
self.label_2.setVisible(True)
self.label_3.setVisible(True)
self.label_6.setVisible(True)
self.lineEdit.setVisible(True)
self.lineEdit_2.setVisible(True)
self.textEdit.setVisible(False)
self.label_7.setVisible(False)4.選擇性顯示與無規(guī)律性相關的控件
def wuguilv_visible(self):
# 選擇性顯示與無規(guī)律性相關的控件
if (self.radioButton.isChecked()==False) and (self.radioButton_2.isChecked()):
self.label_2.setVisible(False)
self.label_3.setVisible(False)
self.label_6.setVisible(False)
self.lineEdit.setVisible(False)
self.lineEdit_2.setVisible(False)
self.textEdit.setVisible(True)
self.label_7.setVisible(True)5.“開始生成”對應的邏輯結(jié)構(gòu)與條件判斷
def shengcheng(self):
if self.radioButton.isChecked(): # 選擇的是有規(guī)律性
qishizhi = self.lineEdit.text()
zhongzhizhi = self.lineEdit_2.text()
if (len(qishizhi)==0):
QtWidgets.QMessageBox.critical(self,'輸入錯誤','請檢查起始值是否為空!')
else:
if (len(zhongzhizhi)==0):
QtWidgets.QMessageBox.critical(self,'輸入錯誤','請檢查終止值是否為空!')
else:
if (qishizhi.isdigit()) and (zhongzhizhi.isdigit()): # 文件名稱為數(shù)字
if int(qishizhi)>=int(zhongzhizhi):
QtWidgets.QMessageBox.critical(self, '輸入錯誤', '起始值應小于終止值!')
else:
shuzi_list = [] # 數(shù)字列表
for i in range(int(qishizhi), int(zhongzhizhi)+1):
shuzi_list.append(str(i))
selected_index = self.comboBox.currentIndex()
wenjian_shengcheng(selected_index, shuzi_list)
QtWidgets.QMessageBox.information(self,'生成成功','文件生成成功,請查看!')
elif (qishizhi.isalpha()) and (zhongzhizhi.isalpha()): # 文件名稱為字母
zimu_list = [] # 字母列表
if (len(qishizhi)==1) and (len(zhongzhizhi)==1):
# 65-90為26個大寫英文字母,97-122為26個小寫英文字母
qishizhi_ord = ord(qishizhi)
zhongzhizhi_ord = ord(zhongzhizhi)
if qishizhi_ord >= zhongzhizhi_ord:
QtWidgets.QMessageBox.critical(self, '輸入錯誤', '起始值應小于終止值!')
else:
if (zhongzhizhi_ord - qishizhi_ord) in range(1, 26):
for i in range(qishizhi_ord, zhongzhizhi_ord+1):
zimu_list.append(chr(i))
selected_index = self.comboBox.currentIndex()
wenjian_shengcheng(selected_index, zimu_list)
QtWidgets.QMessageBox.information(self,'生成成功','文件生成成功,請查看!')
else:
QtWidgets.QMessageBox.critical(self, '輸入錯誤', '請檢查起始值和終止值的大小寫類型!')
else:
QtWidgets.QMessageBox.critical(self, '輸入錯誤', '請檢查起始值和終止值是否為單字母!')
else:
QtWidgets.QMessageBox.critical(self,'輸入錯誤','請檢查起始值和終止值的類型是否匹配!')
else:
if self.radioButton_2.isChecked(): # 選擇的是無規(guī)律性
zidingyi = self.textEdit.toPlainText() # 讀取的默認類型為str
mingcheng_list = zidingyi.split() #以換行符分割
selected_index = self.comboBox.currentIndex()
wenjian_shengcheng(selected_index,mingcheng_list)
QtWidgets.QMessageBox.information(self,'生成成功','文件生成成功,請查看!')
else: # 沒有選擇任何一種文件類型
QtWidgets.QMessageBox.critical(self,'類與“開始生成”按鈕綁定,主要通過len()判斷輸入是否為空以及輸入字母是否為單字母、通過獲取ASCII碼來判斷起始值和終止值字母大小寫不一致的情況以及起始字母小于終止字母的情況。
6.調(diào)用函數(shù),生成文件(夾)
def wenjian_shengcheng(suoyin,liebiao):
# 產(chǎn)生不同種類的文件
match suoyin:
case 0: # 生成文件夾
for i in liebiao:
os.makedirs(i, exist_ok=True)
case 1: # 生成文本文檔txt
for i in liebiao:
open(i+'.txt','w')
case 2: # 生成doc文檔
for i in liebiao:
doc = Document()
doc.save(i+'.doc')
case 3: # 生成docx文檔
for i in liebiao:
doc = Document()
doc.save(i+'.docx')
case 4: # 生成PPT演示文稿
for i in liebiao:
prs = Presentation()
prs.save(i+'.ppt')
case 5: # 生成PPTX演示文稿
for i in liebiao:
prs = Presentation()
prs.save(i+'.pptx')
case 6: # 生成xls工作表
for i in liebiao:
wb = Workbook()
ws = wb.active
wb.save(i+'.xls')
case 7: # 生成xlsx工作表
for i in liebiao:
wb = Workbook()
ws = wb.active
wb.save(i+'.xlsx')四、總程序代碼Batch_creation.py
import sys,os
from jiemian import *
from PyQt5.QtWidgets import QApplication, QWidget
from docx import Document
from pptx import Presentation
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)
# 初始化設置控件的顯示狀態(tài)
self.label_2.setVisible(False)
self.label_3.setVisible(False)
self.label_6.setVisible(True)
self.label_7.setVisible(True)
self.lineEdit.setVisible(False)
self.lineEdit_2.setVisible(False)
self.textEdit.setVisible(False)
# 綁定信號
self.radioButton.clicked.connect(self.guilv_visible)
self.radioButton_2.clicked.connect(self.wuguilv_visible)
self.pushButton.clicked.connect(self.shengcheng)
def guilv_visible(self):
# 選擇性顯示與規(guī)律性相關的控件
if (self.radioButton.isChecked()) and (self.radioButton_2.isChecked()==False):
self.label_2.setVisible(True)
self.label_3.setVisible(True)
self.label_6.setVisible(True)
self.lineEdit.setVisible(True)
self.lineEdit_2.setVisible(True)
self.textEdit.setVisible(False)
self.label_7.setVisible(False)
def wuguilv_visible(self):
# 選擇性顯示與無規(guī)律性相關的控件
if (self.radioButton.isChecked()==False) and (self.radioButton_2.isChecked()):
self.label_2.setVisible(False)
self.label_3.setVisible(False)
self.label_6.setVisible(False)
self.lineEdit.setVisible(False)
self.lineEdit_2.setVisible(False)
self.textEdit.setVisible(True)
self.label_7.setVisible(True)
def shengcheng(self):
if self.radioButton.isChecked(): # 選擇的是有規(guī)律性
qishizhi = self.lineEdit.text()
zhongzhizhi = self.lineEdit_2.text()
if (len(qishizhi)==0):
QtWidgets.QMessageBox.critical(self,'輸入錯誤','請檢查起始值是否為空!')
else:
if (len(zhongzhizhi)==0):
QtWidgets.QMessageBox.critical(self,'輸入錯誤','請檢查終止值是否為空!')
else:
if (qishizhi.isdigit()) and (zhongzhizhi.isdigit()): # 文件名稱為數(shù)字
if int(qishizhi)>=int(zhongzhizhi):
QtWidgets.QMessageBox.critical(self, '輸入錯誤', '起始值應小于終止值!')
else:
shuzi_list = [] # 數(shù)字列表
for i in range(int(qishizhi), int(zhongzhizhi)+1):
shuzi_list.append(str(i))
selected_index = self.comboBox.currentIndex()
wenjian_shengcheng(selected_index, shuzi_list)
QtWidgets.QMessageBox.information(self,'生成成功','文件生成成功,請查看!')
elif (qishizhi.isalpha()) and (zhongzhizhi.isalpha()): # 文件名稱為字母
zimu_list = [] # 字母列表
if (len(qishizhi)==1) and (len(zhongzhizhi)==1):
# 65-90為26個大寫英文字母,97-122為26個小寫英文字母
qishizhi_ord = ord(qishizhi)
zhongzhizhi_ord = ord(zhongzhizhi)
if qishizhi_ord >= zhongzhizhi_ord:
QtWidgets.QMessageBox.critical(self, '輸入錯誤', '起始值應小于終止值!')
else:
if (zhongzhizhi_ord - qishizhi_ord) in range(1, 26):
for i in range(qishizhi_ord, zhongzhizhi_ord+1):
zimu_list.append(chr(i))
selected_index = self.comboBox.currentIndex()
wenjian_shengcheng(selected_index, zimu_list)
QtWidgets.QMessageBox.information(self,'生成成功','文件生成成功,請查看!')
else:
QtWidgets.QMessageBox.critical(self, '輸入錯誤', '請檢查起始值和終止值的大小寫類型!')
else:
QtWidgets.QMessageBox.critical(self, '輸入錯誤', '請檢查起始值和終止值是否為單字母!')
else:
QtWidgets.QMessageBox.critical(self,'輸入錯誤','請檢查起始值和終止值的類型是否匹配!')
else:
if self.radioButton_2.isChecked(): # 選擇的是無規(guī)律性
zidingyi = self.textEdit.toPlainText() # 讀取的默認類型為str
mingcheng_list = zidingyi.split() #以換行符分割
selected_index = self.comboBox.currentIndex()
wenjian_shengcheng(selected_index,mingcheng_list)
QtWidgets.QMessageBox.information(self,'生成成功','文件生成成功,請查看!')
else: # 沒有選擇任何一種文件類型
QtWidgets.QMessageBox.critical(self,'類型錯誤','請選擇一個文件名稱類型!')
def wenjian_shengcheng(suoyin,liebiao):
# 產(chǎn)生不同種類的文件
match suoyin:
case 0: # 生成文件夾
for i in liebiao:
os.makedirs(i, exist_ok=True)
case 1: # 生成文本文檔txt
for i in liebiao:
open(i+'.txt','w')
case 2: # 生成doc文檔
for i in liebiao:
doc = Document()
doc.save(i+'.doc')
case 3: # 生成docx文檔
for i in liebiao:
doc = Document()
doc.save(i+'.docx')
case 4: # 生成PPT演示文稿
for i in liebiao:
prs = Presentation()
prs.save(i+'.ppt')
case 5: # 生成PPTX演示文稿
for i in liebiao:
prs = Presentation()
prs.save(i+'.pptx')
case 6: # 生成xls工作表
for i in liebiao:
wb = Workbook()
ws = wb.active
wb.save(i+'.xls')
case 7: # 生成xlsx工作表
for i in liebiao:
wb = Workbook()
ws = wb.active
wb.save(i+'.xlsx')
if __name__ == '__main__':
app = QApplication(sys.argv)
w = login_interface()
w.show()
sys.exit(app.exec_())
以上就是Python+PyQt實現(xiàn)指定名稱文件批量生成器的詳細內(nèi)容,更多關于Python批量生成文件名的資料請關注腳本之家其它相關文章!
相關文章
Python中Numpy與TensorFlow版本兼容問題完美解決辦法
這篇文章主要給大家介紹了關于Python中Numpy與TensorFlow版本兼容問題的完美解決辦法,確保Python版本與TensorFlow版本兼容是首要任務,因為不兼容的組合可能導致導入錯誤或其他運行時問題,需要的朋友可以參考下2024-07-07
Python 數(shù)據(jù)可視化之Matplotlib詳解
這篇文章主要介紹了Python數(shù)據(jù)可視化庫seaborn的使用總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2021-11-11
Python使用grequests(gevent+requests)并發(fā)發(fā)送請求過程解析
這篇文章主要介紹了Python使用grequests并發(fā)發(fā)送請求過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-09-09
DataFrame窗口函數(shù)rolling()的用法
這篇文章主要介紹了DataFrame窗口函數(shù)rolling()的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02

