Pyside6 QFile

news2024/11/23 21:29:23

Pyside6 QFile

  • QFile使用
    • QFile常用函数
    • 文件编辑类函数
      • 判断文件是否存在
      • 重命名文件
      • 删除文件函数
      • 复制文件
    • 文件内容操作类函数
      • 文件打开函数
      • 文件关闭函数
      • 文件读取函数
        • read函数使用
        • readLine函数使用
        • readAll函数使用
      • 文件写入函数
        • 追加方式写文件
        • 重写方式写文件
    • 程序
      • 界面程序
      • 主程序

Pyside6的QFile类提供了一个读取和写入文件的接口,QFile可以操作文本文件和二进制文件。更多关于QFile类的说明可以参考下面的文档。

https://doc.qt.io/qtforpython-6/PySide6/QtCore/QFile.html#qfile

QFile使用

QFile常用函数

函数作用
open打开文件
readLine读取一行数据,遇到换行符(0x0A)结束
readAll读取全部数据
write写入数据
close关闭文件
exists判断文件是否存在
rename重命名文件
remove删除文件
copy复制文件

本章节例程基于test.bin和test.txt文件进行测试
在这里插入图片描述

文件编辑类函数

判断文件是否存在

exists函数用来判断一个文件是否存在,如果文件存在,则返回True,否则返回False。

if QFile('test.txt').exists() == True: # 判断test.txt文件是否存在
    print('test.txt 存在')
else :
    print('test.txt 不存在')

if QFile('test.bin').exists() == True: # 判断test.bin文件是否存在
    print('test.bin 存在')
else :
    print('test.bin 不存在')

if QFile('download.bin').exists() == True: # 判断download.bin文件是否存在
    print('download.bin 存在')
else :
    print('download.bin 不存在')

在这里插入图片描述

重命名文件

使用rename函数可以重命名文件,前提是文件必须存在。

file1 = QFile('test.txt')
if file1.exists() == True:
    file1.rename('rename_test.txt')
    print('test.txt 文件重命名成功')
else:
    print('test.txt 不存在 ,重命名失败')

file2 = QFile('download.bin')
if file2.exists() == True:
    file2.rename('rename_download.bin')
    print('download.bin 文件重命名成功')
else:
    print('download.bin 不存在 ,重命名失败')
  • 重命名前

在这里插入图片描述

  • 重命名后

在这里插入图片描述

删除文件函数

使用remove函数可以删除文件,前提是文件必须存在。

file1 = QFile('remove.txt')
if file1.exists() == True:
    file1.remove('remove.txt')
    print('remove.txt 文件删除成功')
else:
    print('remove.txt 文件 删除失败')

file2 = QFile('download.bin')
if file2.exists() == True:
    file2.remove('rename_download.bin')
    print('download.bin 文件删除成功')
else:
    print('download.bin 删除失败')
  • 新建remove.txt文件
    在这里插入图片描述
  • 删除remove.txt文件

在这里插入图片描述

复制文件

使用copy函数可以复制文件,前提是文件必须存在。

file1 = QFile('test.bin')
if file1.exists() == True:
    file1.copy('copy_test.bin')
    print('copy_test.bin 文件复制成功')
else:
    print('copy_test.bin 文件 复制失败')

file2 = QFile('download.bin')
if file2.exists() == True:
    file2.copy('copy_download.bin')
    print('copy_download.bin 文件复制成功')
else:
    print('copy_download.bin 文件 复制失败')

在这里插入图片描述
在这里插入图片描述

文件内容操作类函数

文件打开函数

使用open函数可以打开文件,开发者可以在打开函数的时候选择一些参数,这些参数将限制文件的一些具体操作。

NotOpen                  : QIODeviceBase.OpenModeFlag = ... # 0x0 
ReadOnly                 : QIODeviceBase.OpenModeFlag = ... # 0x1 
WriteOnly                : QIODeviceBase.OpenModeFlag = ... # 0x2 
ReadWrite                : QIODeviceBase.OpenModeFlag = ... # 0x3 
Append                   : QIODeviceBase.OpenModeFlag = ... # 0x4 
Truncate                 : QIODeviceBase.OpenModeFlag = ... # 0x8 
Text                     : QIODeviceBase.OpenModeFlag = ... # 0x10
Unbuffered               : QIODeviceBase.OpenModeFlag = ... # 0x20
NewOnly                  : QIODeviceBase.OpenModeFlag = ... # 0x40
ExistingOnly             : QIODeviceBase.OpenModeFlag = ... # 0x80

以上是open函数的一些具体操作,常用的是ReadOnly、WriteOnly、ReadWrite、Append和Truncate。

文件关闭函数

使用close函数可以打开文件,如果往一个文件写入内容后,需要调用close函数才会将新增加的内容写入到文件中,否则内容只会保留在内存中。

文件读取函数

文件读取有3个函数可以使用,分别是read、readLine、readall。这3个函数读到的数据都是bytes类型。

  • read:读取若干个字节的内容
  • readLine:读取一行内容,遇到换行符(0x0A)停止
  • readall:读取全部内容
read函数使用
  • 文本文件内容
    在这里插入图片描述
  • 二进制文件内容
    在这里插入图片描述
file1 = QFile('test.txt')                                                 
if file1.exists() == True:                                                
    file1.open(QFile.ReadOnly) # 只读方式打开文件                         
    print('test.txt 文件存在')                                            
    print("test.txt read %d bytes:",file1.size(),file1.read(file1.size()))
    file1.close() # 关闭文件
else:                                                                     
    print('test.bin 文件 不存在')                                         
                                                                          
file2 = QFile('test.bin')                                                 
if file2.exists() == True:                                                
    file2.open(QFile.ReadOnly) # 只读方式打开文件                         
    print('test.bin 文件存在')                                            
    print("test.bin read 16 bytes:",bytes(file2.read(16)).hex(' ', 1))  
    file2.close() # 关闭文件  
else:                                                                     
    print('test.bin 文件 不存在')                                         

在这里插入图片描述

readLine函数使用
  • 文本文件内容

在这里插入图片描述

  • 二进制文件内容
    在这里插入图片描述
file1 = QFile('test.txt')
if file1.exists() == True:
    file1.open(QFile.ReadOnly) # 只读方式打开文件
    print('test.txt 文件存在')
    print("test.txt read ",file1.readLine())
    file1.close() # 关闭文件
else:
    print('test.bin 文件 不存在')

file2 = QFile('test.bin')
if file2.exists() == True:
    file2.open(QFile.ReadOnly) # 只读方式打开文件
    print('test.bin 文件存在')
    print("test.bin read:",bytes(file2.readLine()).hex(' ', 1)) 
    file2.close() # 关闭文件
else:
    print('test.bin 文件 不存在')

在这里插入图片描述

readAll函数使用
  • 文本文件内容
    在这里插入图片描述
  • 二进制文件内容

在这里插入图片描述

file1 = QFile('test.txt')
if file1.exists() == True:
    file1.open(QFile.ReadOnly) # 只读方式打开文件
    print('test.txt 文件存在')
    print("test.txt read ",file1.readAll())
    file1.close() # 关闭文件
else:
    print('test.bin 文件 不存在')

file2 = QFile('test.bin')
if file2.exists() == True:
    file2.open(QFile.ReadOnly) # 只读方式打开文件
    print('test.bin 文件存在')
    print("test.bin read:",bytes(file2.readAll()).hex(' ', 1)) 
    file2.close() # 关闭文件
else:
    print('test.bin 文件 不存在')        

在这里插入图片描述

文件写入函数

使用write函数可以往文件中写入内容,写入的数据必须是bytes类型。在使用open函数打开文件时可以设置写文件的操作权限。

权限作用
WriteOnly只写操作,会覆盖原文件内容,如果文件不存在创建文件
Append追加写操作,会在原文件的内容最后添加新内容,如果文件不存在创建文件
Truncate以重写模式打开,写入的数据会将原有数据全部清除,通常跟WriteOnly搭配使用
追加方式写文件
  • 文本文件原内容
    在这里插入图片描述
  • 二进制文件原内容
    在这里插入图片描述
file1 = QFile('test.txt')
file1.open(QFile.Append) # 追加写方式打开文件
file1.write(b'ABCDEFGhjiklmn') # 追加写文件
file1.close() # 关闭文件

file2 = QFile('test.bin')
file2.open(QFile.Append) # 追加写方式打开文件
file2.write(b'ABCDEFGhjiklmn') # 追加写文件
file2.close() # 关闭文件

在这里插入图片描述
在这里插入图片描述

重写方式写文件
  • 文本文件原内容
    在这里插入图片描述
  • 二进制文件原内容

在这里插入图片描述

file1 = QFile('test.txt')
file1.open(QFile.WriteOnly | QFile.Truncate)  
file1.write(b'ABCDEFGhjiklmn')  
file1.close() # 关闭文件

file2 = QFile('test.bin')
file2.open(QFile.WriteOnly | QFile.Truncate) 
file2.write(b'ABCDEFGhjiklmn') 
file2.close() # 关闭文件

在这里插入图片描述
在这里插入图片描述

程序

界面程序

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>243</width>
    <height>264</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <widget class="QTabWidget" name="tabWidget">
      <property name="currentIndex">
       <number>0</number>
      </property>
      <widget class="QWidget" name="tab">
       <attribute name="title">
        <string>文件编辑</string>
       </attribute>
       <layout class="QVBoxLayout" name="verticalLayout_3">
        <item>
         <layout class="QVBoxLayout" name="verticalLayout_2">
          <item>
           <widget class="QPushButton" name="pushButton">
            <property name="text">
             <string>判断文件是否存在</string>
            </property>
           </widget>
          </item>
          <item>
           <widget class="QPushButton" name="pushButton_2">
            <property name="text">
             <string>重命名文件</string>
            </property>
           </widget>
          </item>
          <item>
           <widget class="QPushButton" name="pushButton_3">
            <property name="text">
             <string>删除文件</string>
            </property>
           </widget>
          </item>
          <item>
           <widget class="QPushButton" name="pushButton_4">
            <property name="text">
             <string>复制文件</string>
            </property>
           </widget>
          </item>
         </layout>
        </item>
       </layout>
      </widget>
      <widget class="QWidget" name="tab_2">
       <attribute name="title">
        <string>读文件</string>
       </attribute>
       <layout class="QVBoxLayout" name="verticalLayout_5">
        <item>
         <layout class="QVBoxLayout" name="verticalLayout_4">
          <item>
           <widget class="QPushButton" name="pushButton_5">
            <property name="text">
             <string>读取若干个文件内容</string>
            </property>
           </widget>
          </item>
          <item>
           <widget class="QPushButton" name="pushButton_6">
            <property name="text">
             <string>读取一行文件内容</string>
            </property>
           </widget>
          </item>
          <item>
           <widget class="QPushButton" name="pushButton_7">
            <property name="text">
             <string>读取全部文件内容</string>
            </property>
           </widget>
          </item>
         </layout>
        </item>
       </layout>
      </widget>
      <widget class="QWidget" name="tab_3">
       <attribute name="title">
        <string>写文件</string>
       </attribute>
       <layout class="QVBoxLayout" name="verticalLayout_7">
        <item>
         <layout class="QVBoxLayout" name="verticalLayout_6">
          <item>
           <widget class="QPushButton" name="pushButton_8">
            <property name="text">
             <string>追加方式写文件</string>
            </property>
           </widget>
          </item>
          <item>
           <widget class="QPushButton" name="pushButton_9">
            <property name="text">
             <string>重写方式写文件</string>
            </property>
           </widget>
          </item>
         </layout>
        </item>
       </layout>
      </widget>
     </widget>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>243</width>
     <height>22</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>

主程序

# Import Qt libraries
from PySide6.QtWidgets import *
from PySide6.QtCore import QFile,QByteArray
# Import UI developed in Qt Creator
from qfile_ui import Ui_MainWindow  # 导入界面
# Import PseudoSensor
# Import system tools and datetime
import sys
import statistics
import time
from datetime import datetime

# Create and start the Qt application
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        # 设置界面为用户设计的界面
        self.ui = Ui_MainWindow() 
        self.ui.setupUi(self) 

        self.ui.pushButton.clicked.connect(self.file_exists)
        self.ui.pushButton_2.clicked.connect(self.file_rename)
        self.ui.pushButton_3.clicked.connect(self.file_remove)
        self.ui.pushButton_4.clicked.connect(self.file_copy)
        self.ui.pushButton_5.clicked.connect(self.file_read)
        self.ui.pushButton_6.clicked.connect(self.file_readline)
        self.ui.pushButton_7.clicked.connect(self.file_readall)
        self.ui.pushButton_8.clicked.connect(self.file_writeappend)
        self.ui.pushButton_9.clicked.connect(self.file_rewrite)
        
    def file_exists(self):
        if QFile('test.txt').exists() == True: # 判断test.txt文件是否存在
            print('test.txt 存在')
        else :
            print('test.txt 不存在')
       
        if QFile('test.bin').exists() == True: # 判断test.bin文件是否存在
            print('test.bin 存在')
        else :
            print('test.bin 不存在')

        if QFile('download.bin').exists() == True: # 判断download.bin文件是否存在
            print('download.bin 存在')
        else :
            print('download.bin 不存在')
    
    def file_rename(self):
        file1 = QFile('test.txt')
        if file1.exists() == True:
            file1.rename('rename_test.txt')
            print('test.txt 文件重命名成功')
        else:
            print('test.txt 不存在 ,重命名失败')

        file2 = QFile('download.bin')
        if file2.exists() == True:
            file2.rename('rename_download.bin')
            print('download.bin 文件重命名成功')
        else:
            print('download.bin 不存在 ,重命名失败')

    def file_remove(self):
        file1 = QFile('remove.txt')
        if file1.exists() == True:
            file1.remove('remove.txt')
            print('remove.txt 文件删除成功')
        else:
            print('remove.txt 文件 删除失败')

        file2 = QFile('download.bin')
        if file2.exists() == True:
            file2.remove('rename_download.bin')
            print('download.bin 文件删除成功')
        else:
            print('download.bin 删除失败')

    def file_copy(self):
        file1 = QFile('test.bin')
        if file1.exists() == True:
            file1.copy('copy_test.bin')
            print('copy_test.bin 文件复制成功')
        else:
            print('copy_test.bin 文件 复制失败')

        file2 = QFile('download.bin')
        if file2.exists() == True:
            file2.copy('copy_download.bin')
            print('copy_download.bin 文件复制成功')
        else:
            print('copy_download.bin 文件 复制失败')

    def file_read(self):
        file1 = QFile('test.txt')
        if file1.exists() == True:
            file1.open(QFile.ReadOnly) # 只读方式打开文件
            print('test.txt 文件存在')
            print("test.txt read %d bytes:",file1.size(),file1.read(file1.size()))
            file1.close() # 关闭文件
        else:
            print('test.bin 文件 不存在')

        file2 = QFile('test.bin')
        if file2.exists() == True:
            file2.open(QFile.ReadOnly) # 只读方式打开文件
            print('test.bin 文件存在')
            print("test.bin read 16 bytes:",bytes(file2.read(16)).hex(' ', 1)) # 读取16个字节
            file2.close() # 关闭文件
        else:
            print('test.bin 文件 不存在')

    def file_readline(self):
        file1 = QFile('test.txt')
        if file1.exists() == True:
            file1.open(QFile.ReadOnly) # 只读方式打开文件
            print('test.txt 文件存在')
            print("test.txt read ",file1.readLine())
            file1.close() # 关闭文件
        else:
            print('test.bin 文件 不存在')

        file2 = QFile('test.bin')
        if file2.exists() == True:
            file2.open(QFile.ReadOnly) # 只读方式打开文件
            print('test.bin 文件存在')
            print("test.bin read:",bytes(file2.readLine()).hex(' ', 1)) 
            file2.close() # 关闭文件
        else:
            print('test.bin 文件 不存在')

    def file_readall(self):
        file1 = QFile('test.txt')
        if file1.exists() == True:
            file1.open(QFile.ReadOnly) # 只读方式打开文件
            print('test.txt 文件存在')
            print("test.txt read ",file1.readAll())
            file1.close() # 关闭文件
        else:
            print('test.bin 文件 不存在')

        file2 = QFile('test.bin')
        if file2.exists() == True:
            file2.open(QFile.ReadOnly) # 只读方式打开文件
            print('test.bin 文件存在')
            print("test.bin read:",bytes(file2.readAll()).hex(' ', 1)) 
            file2.close() # 关闭文件
        else:
            print('test.bin 文件 不存在')

    def file_writeappend(self):
        file1 = QFile('test.txt')
        file1.open(QFile.Append) # 追加写方式打开文件
        file1.write(b'ABCDEFGhjiklmn') # 追加写文件
        file1.close() # 关闭文件

        file2 = QFile('test.bin')
        file2.open(QFile.Append) # 追加写方式打开文件
        file2.write(b'ABCDEFGhjiklmn') # 追加写文件
        file2.close() # 关闭文件


    def file_rewrite(self):
        file1 = QFile('test.txt')
        file1.open(QFile.WriteOnly | QFile.Truncate)  
        file1.write(b'ABCDEFGhjiklmn')  
        file1.close() # 关闭文件

        file2 = QFile('test.bin')
        file2.open(QFile.WriteOnly | QFile.Truncate) 
        file2.write(b'ABCDEFGhjiklmn') 
        file2.close() # 关闭文件

    def closeAndExit(self):
        sys.exit()

if __name__ == "__main__":
    app = QApplication(sys.argv) # 初始化QApplication

    # 初始化界面并显示界面
    window = MainWindow() 
    window.show() 
    window.setFixedSize(window.width(), window.height())
    sys.exit(app.exec())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1123707.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构和算法——图

图 有向图 带权图 邻接矩阵 邻接表相较于邻接矩阵&#xff0c;减少了存储空间&#xff1b; 邻接表 参考视频&#xff1a;【尚硅谷】数据结构与算法&#xff08;Java数据结构与算法&#xff09;_哔哩哔哩_bilibili

高精度数字压力表丨铭控传感多款数字压力表在多场景中的应用

时代日新月异、变化万千&#xff0c;压力表应用需求始终在不断变化&#xff0c;但铭控传感对压力测量的应用一如既往的了如指掌。铭控传感总是能够为您提供最合适符合您要求的成本和功能都极佳产品解决方案&#xff0c;通过您的需求定制MEOKON产品&#xff0c;铭控传感始终为用…

【EP2C35F672C8 EDA试验箱下载】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、试验箱如何下载&#xff1f;1. 编译工程没问题后&#xff0c;配置引脚2.配置完引脚后&#xff0c;记得重新编译3.配置下载4.配置下载器&#xff0c;需要装驱…

如何使用Python进行自动化测试

目录 一、选择适合的测试框架 二、编写测试用例 三、运行和分析测试结果 四、重构测试用例 五、注意事项 总结 随着软件行业的快速发展&#xff0c;自动化测试已成为软件开发过程中不可或缺的一部分。使用Python进行自动化测试可以帮助我们快速、高效地测试应用程序&…

Explainable-ZSL

模型 体会 作者的实验做得很充足&#xff0c;但未提供可直接运行的代码

可变参数模板 - c++11

文章目录&#xff1a; 可变参数模板的认识参数包的展开递归函数方式展开参数包逗号表达式展开参数包 STL容器中的empalce相关接口函数 可变参数模板的认识 c11 引入了可变参数模板&#xff08;variadic templates&#xff09;的特性&#xff0c;使得编写支持任意数量参数的模板…

交易想简化分析并少失误,波浪原则anzo capital认为必不可少

要想在交易中简化分析并少失误&#xff0c;不管是交易新手还是交易高手&#xff0c;anzo capital认为其实很容易&#xff0c;只要了解艾略特波浪原则。 艾略特波浪原则&#xff0c;每一个趋势都由特定的基本元素(波浪)组成&#xff0c;这些元素具有重复的趋势。这些波浪可以根…

企业或人力资源公司可利用直播将职位以视频直播的方式展现

抖音直播招聘报白是一种通过直播方式展示职位信息并与求职者互动的招聘方式。抖音的短视频流量能够让岗位信息覆盖更广泛的人群&#xff0c;增加招聘信息的曝光度。通过抖音的短视频流量红利和精准推送&#xff0c;能够提高岗位信息的曝光度和求职者的留存率。如果你想做招聘报…

Windows系统安装node-red

Quick Start 1. Install Node.js 第一步下载node.js,超链接在后面 Download the latest LTS version of Node.js from the official Node.js home page. It will offer you the best version for your system. Run the downloaded MSI file. Installing Node.js requires l…

TCP的三次握手、四次挥手!就像打电话一样简单!

目录 学前必会 三次握手详解 和打电话一样 为什么必须要三次&#xff1f; 四次挥手详解 和挂电话一样 为什么要四次挥手&#xff1f; 第四次为何要等待 2*MSL&#xff1f; 相关面试题&#xff1a; 说一下三次握手、四次挥手的过程三次握手四次挥手的目的是什么&#x…

明基护眼台灯怎么样?明基、书客、欧普护眼台灯对比测评

不得不说&#xff0c;如今我国儿童青少年总体近视率非常高&#xff0c;甚至超过了50%&#xff01;其中6岁儿童为14.3%&#xff0c;小学生为35.6%&#xff0c;初中生为71.1%&#xff0c;高中生为80.5%&#xff0c;而造成如此高的近视率的原因主要是不良的学习、生活用眼习惯&…

VMware虚拟机安装Ubuntu22.04教程(2023最新最详细)

目录 简介 1 VMware虚拟机下载与安装 2 Ubuntu操作系统安装与配置 2.1 Ubuntu虚拟机配置 2.2 Ubuntu操作系统安装 简介 Linux是一种自由和开放源代码的操作系统内核&#xff0c;被广泛应用于各种计算机系统中。它以稳定性、安全性和灵活性而闻名&#xff0c;并成为服务器…

科学计算语言Julia编程初步

文章目录 安装基本类型和计算函数初步条件和判断循环向量计算 Julia号称有着比肩C的速度&#xff0c;同时又像Python一样便捷的编程语言&#xff0c;非常适合科研狗使用。之前写了很多博客介绍Julia在数值分析中的应用&#xff0c;这次写一个适合初学者学习的Julia教程系列。 …

客户转化率太低?CRM客户管理系统来帮您

客户是否准确真实、销售跟进策略是否有效、销售跟进流程是否及时等&#xff0c;这些都是影响客户转化的因素。为了提高客户转化率&#xff0c;不少企业开始使用CRM销售管理系统。下面说说销售如何通过CRM系统提高客户转化率&#xff1f; 1、CRM能够识别不同渠道线索质量 CRM系…

开源CasaOS云软件发现关键漏洞

近日&#xff0c;开源 CasaOS 个人云软件中发现的两个严重的安全漏洞。该漏洞一旦被攻击者成功利用&#xff0c;就可实现任意代码执行并接管易受攻击的系统。 这两个漏洞被追踪为CVE-2023-37265和CVE-2023-37266&#xff0c;CVSS评分均为9.8分。 发现这些漏洞的Sonar安全研究…

【数据结构】线性表(十)队列:循环队列及其基本操作(初始化、判空、判满、入队、出队、存取队首元素)

文章目录 队列1. 定义2. 基本操作 顺序队列循环队列1. 头文件和常量2. 队列结构体3. 队列的初始化4. 判断队列是否为空5. 判断队列是否已满6. 入队7. 出队8. 存取队首元素9. 获取队列中元素个数10. 打印队列中的元素9. 主函数10. 代码整合 堆栈Stack 和 队列Queue是两种非常重要…

首次扭亏为盈后,货拉拉还想靠造车更上一层楼?

前阵子&#xff0c;一句【货拉拉“拉不拉”拉布拉多&#xff0c;取决于货拉拉“拉”拉布拉多时拉布拉多“拉”得多不多】的趣梗在网上掀起了一波热潮。而热梗背后的主角货拉拉&#xff0c;近期又透露出了谋求港股上市的消息&#xff0c;进而在市场上又掀起了一波热潮。 招股书…

Java拦截器(Interceptor)和过滤器(Filter)实例详解

一、Java过滤器和拦截器 1.1、过滤器(Filter) Filter过滤器&#xff0c;是Servlet&#xff08;Server Applet&#xff09;技术中的技术&#xff0c;开发人员可以通过Filter技术&#xff0c;管理web资源&#xff0c;可以对指定的一些行为进行拦截&#xff0c;例如URL级别的权限…

程序员的金饭碗在哪里?这几个网站建议收藏!帮助你一步登天

俗话说的好&#xff0c;一个趁手的工具抵过诸葛亮。尤其是在程序员这个领域&#xff0c;不仅是一个非常和科技挂钩的领域&#xff0c;而且更新速度非常的迅速。 连java python都在更新&#xff0c;手头上写码的工具却还是老三样怎可行&#xff1f;这就需要我们跟上时代的脚步&…

全局下载报错怎么办

举个例子&#xff0c;当你要全局下载create-react-app&#xff0c;报如下图所示的错 这个时候&#xff0c;关闭掉git base,再以管理员身份运行 你再次下载&#xff0c;ok了