精华内容
下载资源
问答
  • 注:这里使用pyqt5需要安装插件,其实也可以用python自带的tkinter来实现这个功能,但我没试。因为以前学过pyqt,电脑也安装了这个,就尝试用pyqt5来写了。 在写前端选择上传文件的时候尝试了很多方法都无法得到...

    注:这里使用pyqt5需要安装插件,其实也可以用python自带的tkinter来实现这个功能,但我没试。因为以前学过pyqt,电脑也安装了这个,就尝试用pyqt5来写了。

    在写前端选择上传文件的时候尝试了很多方法都无法得到文件的绝对路径,后来看了一下好像是因为浏览器害怕电脑中所有文件都会被盗取,所以避开了在上传文件时给出绝对路径,也就是前端只能获得选择文件的文件名。

    为此我尝试了两种方法,第一种是讲得到的文件名进行重新存储在指定文件夹下,这样可以直接进行绝对路径才能进行的操作。这里的文件选择是在前端我使用layui自带的文件加载方法,就会出现选择文件的界面。
    layui实现前端链接:https://www.layui.com/doc/modules/upload.html

            file_path = request.files.get('file')  #获取从前端传来的文件的文件路径
            # 先将原来的文件保存下来
            file_paths = file_path.filename  #获取对应路径的文件名
            new_fname=r"D:/学科建设/毕业设计/static/file/"+file_paths
            print(new_fname)  
            file_path.save(new_fname)  #将它保存在指定文件夹下
    

    这是一种方法,然后接下来说的就是我使用pyqt来实现的方法了,直接写了一个类函数,然后调用该类就出现了文件的选择界面,但速度有点慢。
    前端用html实现

    <div class="layui-card" id="card2">
            <div class="layui-button">
                 <button class="layui-btn layui-btn-normal"id="add" οnclick="clickme()">点击上传</button>
            </div>
        </div>
    

    script标签里面绑定点击事件

    <script>
    
    		$('#add').click(function(){
    		    alert('点击成功')
                $.post('/file_upload',{}, function(ans){
                    if(ans=='false') {
                        alert('上传失败,请重新选择文件')
                    }
                    else {
                        alert(ans+'上传成功')
                    }
                })
            })
    	</script>
    

    class实现的文件选择的类:

    from PyQt5.QtWidgets import QFileDialog
    from win32com import client as wc
    import os
    class xuanze():
        def __init__(self):
            get_filename_path, ok = QFileDialog.getOpenFileName(None,
                                                                "选取单个文件",
                                                                "C:/",
                                                                "All Files (*);;Text Files (*.txt)")
    
    
            if ok:
                word = wc.Dispatch("Word.Application")
                if get_filename_path.endswith('.doc') and not get_filename_path.startswith('~$'):
                    print(get_filename_path)
                    # 打开文件
                    doc = word.Documents.Open(get_filename_path)
                    # # 将文件名与后缀分割
                    rename = os.path.splitext(get_filename_path)
                    # print(rename)
                    # os.rename(get_filename_path,rename[0]+'.docx')
                    # 将文件另存为.docx
                    doc.SaveAs(rename[0] + '.docx', 12)  # 12表示docx格式
                    doc.Close()
                    get_filename_path = rename[0] + '.docx'
                # self.filePathlineEdit.setText(str(get_filename_path))
                # 将其重命名为zip文件
                if get_filename_path.endswith('.docx'):
                    re = os.path.splitext(get_filename_path)
                    os.rename(get_filename_path, re[0] + '.zip')
                print('转换结束')
                data=os.path.split(get_filename_path)
                self.name=data[1]
            else :
                self.name='false'
    
    

    调用该类并返回:

    @app.route('/file_upload',methods=['GET', 'POST'])
    def unloade_return():
        app=QApplication(sys.argv)
        value=xuanze()
        return value.name
    

    注意在app重定位那一定要加methods方法,否则会报405(也就是不能加载静态页面的错)。
    就这样就实现了所有内容。
    还有我的xuanze()类主要是实现将doc格式文档另存为docx格式文档,要打开文件并另存为,所以必须要绝对路径才能实现。最后再讲docx格式文档重命名为zip格式文档。

    最后:本人水平有限,如果大佬有更好的方法,能指教一二那感激不尽。

    展开全文
  • 获取文件夹路径实例: 第一个参数,有self的话用self,没有的话用None。 第二个参数,设置窗口名。 第三个参数,设置默认打开路径

    下面是常用的4个文件对话框动作:

    QFileDialog.getExistingDirectory()   # 返回选中的文件夹路径
    QFileDialog.getOpenFileName()   # 返回选中的文件路径
    QFileDialog.getOpenFileNames()   # 返回选中的多个文件路径
    QFileDialog.getSaveFileName()   # 存储文件
    

    获取文件夹路径实例

    QFileDialog.getExistingDirectory(None, "请选择文件夹路径", "D:\\Qt_ui")
    QFileDialog.getExistingDirectory(self, "请选择文件夹路径", "D:\\Qt_ui")
    


    第一个参数,有self的话用self,没有的话用None。
    第二个参数,设置窗口名。
    第三个参数,设置默认打开路径。

    获取多文件路径实例

    QFileDialog.getOpenFileNames(None, "请选择要添加的文件", path, "Text Files (*.xls);;All Files (*)")
    


    第四个参数,列出可以进行筛选的参数,第一个是默认的,多个用双分号分开。

    运行效果图
    在这里插入图片描述
    在这里插入图片描述
    喜欢的点个赞❤吧!

    展开全文
  • 最近在做Python页面逻辑功能的过程中,想实现一个文件筛选的功能,但是在网上找了一下,没有找到相类似的,大多都是一些C++的代码段,经过不断的摸索,终于把这个...都来通过Python中QFileSystemModel进行获取Windo...

    最近在做Python页面逻辑功能的过程中,想实现一个文件筛选的功能,但是在网上找了一下,没有找到相类似的,大多都是一些C++的代码段,经过不断的摸索,终于把这个功能做出来了,希望大家做类似功能,能够对你有所帮助。
     

    功能如下需求:


           左半部分是QtreeView生成的系统树形文件夹结构(只显示文件夹),右半部分通过在QtreeView中双击点中某个文件夹后,在右边的窗口中会显示出这个文件夹中的所有文件(只显示文件)。都来通过Python中QFileSystemModel进行获取Windows下所有文件进行筛选后得到指定路径,根据指定路径进行文件筛选,然后呈现文件夹下的所有文件。

    所用功能段:

    Pyqy5   QTreeView  类型引用(呈现内容区别)

    Pyqt5    QtCore.QDir类型引用(文件夹,文件筛选)

    Pyqt5    QFileSystemModel   model(文件流获取,数据插入,数据清空等)模块使用

    Pyqt5    Layout 模块使用  (窗口创建,按钮创建,样式修改)

    OS模块文件流获取(文件夹,文件获取)

    反斜杠在Python中需要转义(‘\’需要转成这样'\\')

     

    源码如下:

    import sys
    import os
    from PyQt5 import QtCore
    from PyQt5.Qt import *
    
    
    
    class MainWidget(QWidget):
    
        def __init__(self, parent=None):
            super(MainWidget, self).__init__(parent)
    
            #获取系统所有文件
            self.model01 = QFileSystemModel()
            #进行筛选只显示文件夹,不显示文件和特色文件
            self.model01.setFilter(QtCore.QDir.Dirs|QtCore.QDir.NoDotAndDotDot)
            self.model01.setRootPath('')
    
            #定义创建左边窗口
            self.treeView1 = QTreeView(self)
            self.treeView1.setModel(self.model01)
            for col in range(1, 4):
                self.treeView1.setColumnHidden(col, True)
            self.treeView1.doubleClicked.connect(self.initUI)
    
            #定义创建右边窗口
            self.model02 = QStandardItemModel()
            self.treeView2 = QTreeView(self)
            self.treeView2.setModel(self.model02)
    
            #将创建的窗口进行添加
            self.layout = QHBoxLayout()
            self.layout.addWidget(self.treeView1)
            self.layout.addWidget(self.treeView2)
            self.setLayout(self.layout)
    
    
        def initUI(self, Qmodelidx):
            #每次点击清空右边窗口数据
            self.model02.clear()
            #定义一个数组存储路径下的所有文件
            PathData = []
            #获取双击后的指定路径
            filePath = self.model01.filePath(Qmodelidx)
            # List窗口文件赋值
            PathDataName = self.model02.invisibleRootItem()
            #拿到文件夹下的所有文件
            PathDataSet = os.listdir(filePath)
            #进行将拿到的数据进行排序
            PathDataSet.sort()
            #遍历判断拿到的文件是文件夹还是文件,Flase为文件,True为文件夹
            for Data in range(len(PathDataSet)):
                if os.path.isdir(filePath + '\\' + PathDataSet[Data]) == False:
                    PathData.append(PathDataSet[Data])
                elif os.path.isdir(filePath + '\\' + PathDataSet[Data]) == True:
                    print('2')
            #将拿到的所有文件放到数组中进行右边窗口赋值。
            for got in range(len(PathData)):
                gosData = QStandardItem(PathData[got])
                PathDataName.setChild(got, gosData)
    
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        window = MainWidget()
        window.resize(600, 400)
        window.show()
        sys.exit(app.exec_())

    效果如下:这样我就将C盘下的NVIDIA文件夹中的所有文件都呈现在了右边的窗口中。

     

    展开全文
  • PyQt5 文件保存对话框

    千次阅读 2019-11-25 14:04:27
    Qt的文件保存对话框和文件打开对话框一样,返回的都是一个文件路径,所以调用文件对话框QFileDialog只是为了实时获取文件路径而不是对文件进行操作,文件保存操作和文件获取操作相比,文件保存操作可以直接输入路径...

    Qt的文件保存对话框和文件打开对话框一样,返回的都是一个文件路径,所以调用文件对话框QFileDialog只是为了实时获取文件路径而不是对文件进行操作,文件保存操作和文件获取操作相比,文件保存操作可以直接输入路径,而文件获取只能从已有的路径中选择一个路径,本实例可以打开一个文本类文件获取其路径,然后保存到另一个路径,等于复制文件。

    import sys
    import os
    from PyQt5.QtWidgets import QWidget, QFileDialog, QPushButton, QGridLayout, QApplication, QFormLayout, QLineEdit
    
    class win(QWidget):
        def __init__(self):
            super().__init__()
            self.setUI()
    
        def setUI(self):
            self.btnOpen = QPushButton('open path')
            self.btnSave = QPushButton('save path')
            self.btnOk = QPushButton('ok')
            self.btnOpen.clicked.connect(self.openFile)
            self.btnSave.clicked.connect(self.saveFile)
            self.btnOk.clicked.connect(self.ok)
            self.openLine = QLineEdit()
            self.saveLine = QLineEdit()
            self.formlayout = QFormLayout()
            self.formlayout.addRow('打开路径', self.openLine)
            self.formlayout.addRow('保存路径', self.saveLine)
            self.grid = QGridLayout()
            self.grid.addItem(self.formlayout, 0, 0)
            self.grid.addWidget(self.btnOpen, 1, 0)
            self.grid.addWidget(self.btnSave, 2, 0)
            self.grid.addWidget(self.btnOk, 3, 0)
            self.setLayout(self.grid)
            self.show()
    
        def openFile(self):
            self.file,fileType = QFileDialog.getOpenFileName(self, 'open file', './', "ALL (*.*)")
            if self.file:
                self.openLine.setText(str(self.file))
    
        def saveFile(self):
            self.fname, ftype = QFileDialog.getSaveFileName(self, 'save file', './', "ALL (*.*)")
            if self.fname:
                self.saveLine.setText(self.fname)
    
        def ok(self):
            if self.fname:
                if os.path.exists(self.file):
                    with open(self.file, 'r') as f:
                        content = f.read()
                        with open(self.fname, 'w') as fn:
                            fn.write(content)
                self.close()
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = win()
        window.show()
        sys.exit(app.exec_())
    

    运行结果:

     

    展开全文
  • 先说一下python获取当前运行文件绝对路径的方法。 styleSheet"相对"路径加载图片 styleSheet用相对路径我是怎么试都不管用。加了`:/`在前面也不管用。 既然只有绝对路径管用,那我就用绝对路径,变相的相对路径...
  • 功能: 记录上一次的打开的文件...class Pyqt5_merge(QtWidgets.QWidget, Ui_Form): def __init__(self): # 实例本身 super(Pyqt5_merge, self).__init__() #目录路径 self.firmware_dir = None self.last_firmw.
  • 因此对于新手来说,想要快速接受PyQt5系统性的训练是一个非常困难的事情,2位笔者在最初学习PyQt5的时候也是吃尽了苦头,查阅了PyQt5与Qt5的大量官方文献资料并结合几年的实战应用之后,才敢说在PyQt5方面稍微有所...
  • PyQt5 使用QWebEngineView 内置浏览器模块时 需要加载本地的url(html)文件 使用正常的 “../”上一级目录 “./”本级目录 无法正常使用 需要使用os模块 其中: import os #获取当前路径 print(os....
  • 1,使用静态方法,快捷获取文件路径 2, 构造函数 3,文件模式设置 4,字符串过滤器 5,信号相关 ** # # QFileDialog # 文件选择对话框 # 允许用户选择文件, # 遍历文件系统,以选择一个或者多个文件目录 fro...
  • # 获取文件路径对话框 file_name = QFileDialog.getOpenFileName(self,"open file dialog","C:\Users\Administrator\Desktop","Txt files(*.txt)") ##"open file Dialog "为文件对话框的标题,第三个是打开的默认...
  • 概述 选取文件夹QFileDialog.getExistingDirectory() 选择文件QFileDialog.getOpenFileName() ...python获取当前路径 importos,sys 使用sys.path[0]、sys.argv[0]、os.getcwd()、os.path.abspath(__file__)、os...
  • 可以在输入框中输入文件的完整路径,点击计算来获取MD5。 也可以通过点击选择文件按钮来选择要计算的文件,再点击计算来获取MD5。 from PyQt5.QtGui import QIcon from PyQt5.QtCore import pyqtSlot,...
  • 获取当前文件的系统路径作为打开文件的系统路径: self.filepath=os.getcwd() import sys import os from PyQt5.QtWidgets import QFileDialog,QApplication,QWidget from PyQt5 import QtCore import ...
  • 本文主要介绍PyQt界面实现中常用的消息弹出对话框、提供用户输入的输入框、打开文件获取文件/目录路径的文件对话框。学习这三种控件前,先想一下它们使用的主要场景: 1、消息弹出对话框。程序遇到问题需要退出...
  • 本文主要介绍PyQt界面实现中常用的消息弹出对话框、提供用户输入的输入框、打开文件获取文件/目录路径的文件对话框。 本文主要针对这三种控件的主要场景进行介绍。感兴趣的朋友跟随小编一起看看吧
  • pyinstaller打包使用pyqt5模块的时候,在win平台下,由于pyinstaller无法准确获取QT动态库文件路径,会报错导致无法打开运行程序,并提示错误信息pyinstaller failed to execute script pyi_rth_qt5plugins此时我们...
  • 本文主要介绍PyQt界面实现中常用的消息弹出对话框、提供用户输入的输入框、打开文件获取文件/目录路径的文件对话框。学习这三种控件前,先想一下它们使用的主要场景: 1、消息弹出对话框。程序遇到问题需要退出...
  • Python 技术篇-利用pyqt5库读取剪切板已复制数据的格式类型,python判断复制文件的文件类型。 首先介绍下复制内容类型的几种分类: ['text/plain'] 是纯文本类型。...当为文件类型时,可以通过 urls() 获取文件路径
  • 创建一个流程发起界面,通过选择下拉菜单和单选选择,选择上传文本,点击选择文件,获取一个文件路径,预览按钮,可以生成一个窗口,可以预览一下表格数据,然后通过上传按钮,可以进行数据提交。 import sys, math ...
  • 代码很简单,但是想得把它做成一个脚本,直接用图形界面获取当前文件夹和文件夹下的文件,不然每次都手动复制粘贴路径,太不优雅了。 安装PyQt5 需要注意Ubuntu环境下不能在pycharm中安装PyQt5,不然无法使用,在...
  • """ pyqt5串口通信文件SerialCommunication.py """ import binascii import os import serial import serial.tools.list_ports from PyQt5.QtGui import QPixmap ...# 获取“串口指示灯亮”图片文件路径

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

pyqt5获取文件路径