python qt 选择文件只获取文件名
时间: 2023-11-10 09:05:29 浏览: 262
可以使用`QFileDialog.getOpenFileName()`方法选择文件,并且返回的是选择文件的路径和文件名。如果只需要文件名,可以使用`os.path.basename()`方法获取文件名部分。
示例代码:
```python
import os
from PyQt5.QtWidgets import QFileDialog, QWidget
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# ...
def select_file(self):
file_path, _ = QFileDialog.getOpenFileName(self, "Select File")
file_name = os.path.basename(file_path)
print(file_name)
```
在上面的代码中,`QFileDialog.getOpenFileName()`方法返回的是一个元组,其中第一个元素是文件路径,第二个元素是文件类型,因此我们只取第一个元素即可。`os.path.basename()`方法用于获取文件名部分。
相关问题
python pyqt5 打开文件夹,获取所选择文件的路径及文件名
你可以使用QFileDialog来实现在PyQt5中打开文件夹,获取所选文件的路径和文件名。下面是一个简单的示例代码:
```
from PyQt5.QtWidgets import QApplication, QFileDialog
app = QApplication([])
dialog = QFileDialog()
dialog.setFileMode(QFileDialog.DirectoryOnly)
dialog.setOption(QFileDialog.ShowDirsOnly, True)
if dialog.exec_() == QFileDialog.Accepted:
selected_folder = dialog.selectedFiles()[0]
print("Selected Folder:", selected_folder)
```
该代码创建了一个QFileDialog对话框,并将其设置为只显示文件夹。当用户选择文件夹并点击“打开”按钮时,将打印所选文件夹的路径。
如果您想要获取所选文件夹中的所有文件名,可以使用os.listdir()函数来实现:
```
import os
if dialog.exec_() == QFileDialog.Accepted:
selected_folder = dialog.selectedFiles()[0]
print("Selected Folder:", selected_folder)
files = os.listdir(selected_folder)
print("Files in Folder:", files)
```
这将打印所选文件夹中的所有文件名。
pyqt获取文件变化文件名
你可以使用`QFileSystemWatcher`类来监视文件系统中的特定文件或目录,并在发生更改时发出信号。以下是一个示例代码,可以在文件发生更改时打印文件名:
```python
from PyQt5.QtCore import QFileSystemWatcher, pyqtSignal, pyqtSlot, QDir
class FileWatcher(QFileSystemWatcher):
file_changed = pyqtSignal(str)
def __init__(self, parent=None):
super().__init__(parent)
self.directoryChanged.connect(self.on_directory_changed)
self.fileChanged.connect(self.on_file_changed)
@pyqtSlot(str)
def on_directory_changed(self, path):
print(f"Directory changed: {path}")
@pyqtSlot(str)
def on_file_changed(self, path):
print(f"File changed: {path}")
self.file_changed.emit(path)
if __name__ == '__main__':
import sys
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
watcher = FileWatcher()
watcher.addPath('/path/to/your/file')
watcher.file_changed.connect(lambda path: print(f"File {path} changed!"))
sys.exit(app.exec_())
```
这个示例中,我们创建了一个`FileWatcher`类,它继承了`QFileSystemWatcher`类,并且在文件或目录发生更改时发射了一个信号。我们使用`addPath()`方法来添加要监视的文件或目录。在`on_file_changed()`方法中,我们打印文件名,并发射`file_changed`信号,以便在主程序中处理文件更改事件。
阅读全文