Qt文件内查找指定字符串
时间: 2024-01-08 07:02:16 浏览: 63
可以使用Qt Creator自带的“查找”功能,在编辑界面右上角搜索框中输入要查找的字符串,即可自动搜索出包含这个字符串的文件列表。另外,你可以使用Qt Assistant中的搜索功能,对整个Qt文档进行关键词搜索。如果需要在代码中查找包含特定字符串的行,可以使用Ctrl+Shift+F组合键打开全局查找/替换对话框,填入特定的搜索条件,点击查找。
相关问题
UI创建Python解压压缩包内包含指定字符的文件
这里提供一个使用PyQt5创建UI界面进行解压缩和查找指定文件的示例程序:
```python
import os
import zipfile
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QVBoxLayout, QLabel, QLineEdit, QPushButton, QTextEdit, QFileDialog
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建界面布局
hbox1 = QHBoxLayout()
hbox1.addWidget(QLabel('Zip文件路径:'))
self.zip_path_edit = QLineEdit()
hbox1.addWidget(self.zip_path_edit)
self.choose_zip_btn = QPushButton('选择')
self.choose_zip_btn.clicked.connect(self.choose_zip_file)
hbox1.addWidget(self.choose_zip_btn)
hbox2 = QHBoxLayout()
hbox2.addWidget(QLabel('解压缩到:'))
self.extract_folder_edit = QLineEdit()
hbox2.addWidget(self.extract_folder_edit)
self.choose_extract_folder_btn = QPushButton('选择')
self.choose_extract_folder_btn.clicked.connect(self.choose_extract_folder)
hbox2.addWidget(self.choose_extract_folder_btn)
hbox3 = QHBoxLayout()
hbox3.addWidget(QLabel('查找文件名中包含:'))
self.search_string_edit = QLineEdit()
hbox3.addWidget(self.search_string_edit)
self.search_btn = QPushButton('查找')
self.search_btn.clicked.connect(self.search_files)
hbox3.addWidget(self.search_btn)
self.result_edit = QTextEdit()
vbox = QVBoxLayout()
vbox.addLayout(hbox1)
vbox.addLayout(hbox2)
vbox.addLayout(hbox3)
vbox.addWidget(self.result_edit)
self.setLayout(vbox)
self.setWindowTitle('Zip文件解压缩和查找')
self.show()
def choose_zip_file(self):
# 选择Zip文件
file_name, _ = QFileDialog.getOpenFileName(self, '选择Zip文件', '', 'Zip文件 (*.zip)')
if file_name:
self.zip_path_edit.setText(file_name)
def choose_extract_folder(self):
# 选择解压缩文件夹
folder_name = QFileDialog.getExistingDirectory(self, '选择解压缩文件夹')
if folder_name:
self.extract_folder_edit.setText(folder_name)
def search_files(self):
zip_file_path = self.zip_path_edit.text()
extract_folder = self.extract_folder_edit.text()
search_string = self.search_string_edit.text()
# 验证输入的路径和字符是否合法
if not os.path.isfile(zip_file_path):
self.result_edit.append('Zip文件路径无效')
return
if not os.path.isdir(extract_folder):
self.result_edit.append('解压缩文件夹路径无效')
return
if not search_string:
self.result_edit.append('请输入要查找的字符串')
return
# 打开Zip文件并解压缩
with zipfile.ZipFile(zip_file_path, 'r') as zip_file:
zip_file.extractall(extract_folder)
self.result_edit.append('Zip文件已解压缩到: ' + extract_folder)
# 遍历Zip文件内的所有文件
for file_name in zip_file.namelist():
# 如果文件名中包含指定字符
if search_string in file_name:
# 打开文件并读取内容
with zip_file.open(file_name) as file:
content = file.read()
# 将文件内容显示在界面上
self.result_edit.append('在文件 ' + file_name + ' 中找到字符串:')
self.result_edit.append(content.decode())
def closeEvent(self, event):
# 窗口关闭时清除解压缩文件夹
extract_folder = self.extract_folder_edit.text()
if os.path.isdir(extract_folder):
for file_name in os.listdir(extract_folder):
file_path = os.path.join(extract_folder, file_name)
if os.path.isfile(file_path):
os.remove(file_path)
elif os.path.isdir(file_path):
os.rmdir(file_path)
os.rmdir(extract_folder)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
app.exec_()
```
该程序使用了PyQt5来创建UI界面,并提供了选择Zip文件、选择解压缩文件夹和查找指定字符的功能。在解压缩Zip文件时,程序会将文件解压缩到指定文件夹中,然后遍历Zip文件内的所有文件,查找文件名中包含指定字符的文件,并显示文件内容。程序还会在窗口关闭时清除解压缩文件夹。
QT打开一个路径下的所有的.xls文件,判断文件里面是否含有字符串“shijain”,并将所在的位置信息显示在textbrowe
可以使用Qt的QDir类来遍历指定路径下的所有.xls文件,然后使用QAxObject类打开Excel文件并查找字符串。以下是代码示例:
```cpp
QDir dir("your/path");
QStringList filters;
filters << "*.xls";
QFileInfoList fileList = dir.entryInfoList(filters);
foreach (QFileInfo file, fileList) {
QAxObject *excel = new QAxObject("Excel.Application");
QAxObject *workbooks = excel->querySubObject("Workbooks");
QAxObject *workbook = workbooks->querySubObject("Open(const QString&)", file.absoluteFilePath());
QAxObject *worksheets = workbook->querySubObject("Worksheets");
int sheetCount = worksheets->property("Count").toInt();
for (int i = 1; i <= sheetCount; i++) {
QAxObject *sheet = worksheets->querySubObject("Item(int)", i);
QAxObject *usedRange = sheet->querySubObject("UsedRange");
QAxObject *find = usedRange->querySubObject("Find(QString)", "shijian");
if (find) {
int row = find->property("Row").toInt();
int column = find->property("Column").toInt();
QString info = QString("%1\t%2\t%3\n").arg(file.absoluteFilePath()).arg(i).arg(QString("%1,%2").arg(row).arg(column));
ui->textBrowser->append(info);
find->dynamicCall("Clear()");
delete find;
}
delete usedRange;
delete sheet;
}
workbook->dynamicCall("Close()");
delete workbook;
delete worksheets;
delete workbooks;
excel->dynamicCall("Quit()");
delete excel;
}
```
该代码会打开指定路径下的所有.xls文件,遍历文件中的所有工作表并查找是否包含字符串“shijian”,如果找到了,则会将文件路径、工作表序号以及字符串位置信息显示在textBrowser中。注意:需要在.pro文件中添加`LIBS += -lOleAut32`才能使用QAxObject类。