当前位置: 首页 > news >正文

【新人系列】Python 入门(十四):文件操作

✍ 个人博客:https://blog.csdn.net/Newin2020?type=blog
📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html
📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们一起交流~
📚 专栏简介:在这个专栏,我将带着大家从 0 开始入门 Python 的学习。在这个 Python 的新人系列专栏下,将会总结 Python 入门基础的一些知识点,方便大家快速入门学习~
❤️ 如果有收获的话,欢迎点赞 👍 收藏 📁 关注,您的支持就是我创作的最大动力 💪

Python 中对文件的操作有很多种常见的操作包括创建、删除、修改权限、读取、写入等这些操作可大致分为以下 2 类:

  • 删除、修改权限:作用于文件本身属于系统级操作。
  • 写入、读取:是文件最常用的操作作用于文件的内容属于应用级操作。

文件的应用级操作可以分为以下 3 步每一步都需要借助对应的函数实现:

  • 打开文件:使用 open( ) 函数该函数会返回一个文件对象。
  • 对已打开文件做读/写操作:读取文件内容可使用 read( )、readline( ) 以及 readlines( ) 函数;向文件中写入内容可以使用 write( ) 函数。
  • 关闭文件:完成对文件的读/写操作之后最后需要关闭文件可以使用 close( ) 函数。

1. 创建 / 打开文件

1.1 基本语法

open( ) 函数用于创建或打开指定文件该函数的常用语法格式下:

file = open(file_name [,mode='r' [,buffering=-1 [,encoding=None] ] ])

此格式中用 [ ] 括起来的部分为可选参数。其中常用参数所代表的含义如下:

  • file:表示要创建的文件对象。
  • file_name:要创建或打开文件的文件名称该名称要用引(单引号或双引号都可以)括起来。
  • mode:可选参数用于指定文件的打开模式,如果不写则默认以只读(r)模式打开文件。
  • encoding:手动设定打开文件时所使用的编码格式不同平台的 ecoding 参数值也不同以 Windows 为例,其默认为 cp936(实际上就是 GBK 编码)。

open 函数支持的文件打开模式:

在这里插入图片描述

1.2 上下文管理器

有时候我们 open 完文件后,可能会忘记关闭文件。而在 Python 中,使用 with as 语句可以操作上下文管理器(context manager),它能够帮助我们自动分配并且释放资源。

with as 语句的基本语法格式为:

with 表达式 [as target]:代码块

此格式中,用 [ ] 括起来的部分可以使用,也可以省略。其中,target 参数用于指定一个变量,该语句会将 expression 指定的结果保存到该变量中。

with open('open_file.txt', 'r') as f:print(f.read())

2. 读取文件

Python 提供了如下 3 种函数,它们都可以帮我们实现读取文件中数据的操作:

  • read( ) 函数:逐个字节或者字符读取文件中的内容
  • readline( ) 函数:逐行读取文件中的内容
  • readlines( ) 函数:一次性读取文件中多行内容

3.1 read( ) 函数

read( ) 函数的基本语法格式如下:

file.read([size])

其中,file 表示已打开的文件对象;size 作为一个可选参数,用于指定一次最多可读取的字符(字节)个数,如果省略,则默认一次性读取所有内容。

示例 1:读取文本

# open_file.txt
hello world1
hello world2
hello world3# test.py - 读取1
f = open("open_file.txt", 'r')
print(f.read())     # 不指定字节数则默认全部读取出来
f.close()# test.py - 读取2
f = open("open_file.txt", 'r')
print(f.read(5))     # hello
print(f.read(5))     #  worl
f.close()

示例 2:读取图片

# 以二进制形式打开指定文件
f = open("pic.png", 'rb')
print(f.read())    # 会输出字节流形式的数据

示例 3:rstrip 消除

我们还可以将 open 的文件或 read 读取到的数据赋值给一个变量,然后通过这个变量进行操作。

f = open("open_file.txt", 'r')
contents = f.read()
print(contents.rstrip())   #rstrip()用于消除原始结果后会空出的一行
f.close()

read( ) 函数抛出 UnicodeDecodeError 异常的解决方法

在使用 read( ) 函数时,如果 Python 解释器提示 UnicodeDecodeeError 异常或者显示为乱码,其原因在于目标文件使用的编码格式和 open( ) 函数打开该文件时使用的编码格式不匹配。

例如现在我有一段脚本用来获取并打印 ping www.baidu.com 返回的数据信息。

import subprocessif __name__ == '__main__':shell_cmd = 'ping www.baidu.com'p = subprocess.Popen(shell_cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)while p.poll() is None:line = p.stdout.readline()line = line.strip()if line:print(line)if p.returncode == 0:print('Subprogram success')else:print('Subprogram failed')

我们在 cmd 中 ping 这个网址,就会返回一些数据信息:

在这里插入图片描述

但是我们运行上面的脚本打印出来的信息确实一些字节流,看不懂什么意思。

在这里插入图片描述

这就需要我们对返回的数据进行解码操作,我先尝试用 utf-8 进行解码。

import subprocessif __name__ == '__main__':shell_cmd = 'ping www.baidu.com'p = subprocess.Popen(shell_cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)while p.poll() is None:line = p.stdout.readline()line = line.strip()if line:line = line.decode('utf-8')print(line)if p.returncode == 0:print('Subprogram success')else:print('Subprogram failed')

却发现运行时返回了 UnicodeDecodeeError 的异常。

在这里插入图片描述

这是因为返回的数据格式不是 utf-8,即编码格式不匹配。因此,我们可以使用 chardet 库中的 detect 检测函数来检测返回的数据的编码格式是什么。

import subprocess
import chardetif __name__ == '__main__':shell_cmd = 'ping www.baidu.com'p = subprocess.Popen(shell_cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)while p.poll() is None:line = p.stdout.readline()line = line.strip()if line:print(chardet.detect(line))print(line)if p.returncode == 0:print('Subprogram success')else:print('Subprogram failed')

这时候我们就可以获取到返回数据的编码格式,即为 GB2312 格式。

在这里插入图片描述

因此,我们在解码的时候指定用 GB2312 格式即可返回解码成功后的数据。

import subprocessif __name__ == '__main__':shell_cmd = 'ping www.baidu.com'p = subprocess.Popen(shell_cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)while p.poll() is None:line = p.stdout.readline()line = line.strip()if line:line = line.decode('GB2312')print(line)if p.returncode == 0:print('Subprogram success')else:print('Subprogram failed')

在这里插入图片描述

2.2 readline( ) 函数

readline( ) 函数用于读取文件中的一行,包含最后的换行符 “\n”。此函数的基本语法格式为:

file.readline([size])

其中,file 为打开的文件对象;size 为可选参数,用于指定读取每一行时,一次最多读取的字符(字节)数。

f = open("open_file.txt")
print(f.readline())
print(f.readline())
f.close()

在这里插入图片描述

如果不想打印出空行,则可以在后面通过 end 指定结尾不是换行符。

f = open("open_file.txt")
print(f.readline(), end='')
print(f.readline(), end='')
f.close()

在这里插入图片描述

注意 readline 中传入的参数不是指定读取的行数,而是字节数。

f = open("open_file.txt")
print(f.readline(3), end='')    # hel
f.close()

另外,我们也可以通过 for 循环遍历获取文件中的每行数据。

filename = 'open_file.txt'
f = open(filename)
for line in f:print(line.rstrip())    #rstrip()可以消除原始结果每行后的空白行
f.close()

2.3 readlines( ) 函数

readlines( ) 函数用于读取文件中的所有行,它和调用不指定 size 参数的 read( ) 函数类似,只不过该函数返回是一个字符串列表,其中每个元素为文件中的一行内容。

readlines( ) 函数的基本语法格式如下:

file.readlines()

其中,file 为打开的文件对象。和 read( )、readline( ) 函数一样,它要求打开文件的模式必须为可读模式(包括 r、rb、r+、rb+ 4 种)。

f = open("open_file.txt")
print(f.readlines())    # ['hello world1\n', 'hello world2\n', 'hello world3']
f.close()

2.4 读取大文件

Python 读取文件一般是利用 open( ) 函数以及 read( ) 函数来完成,但该方式仅适合读取小文件。因为调用 read( ) 会一次性读取文件的全部内容,调用 readlines( ) 一次读取所有内容并按行返回 list。如果文件过大,如 10G,会造成 MemoryError 内存溢出,正确的做法:可以反复调用 read(size) 方法,每次指定读取 size 个字节的内容。

处理大文件核心思路: 通过参数指定每次读取的大小长度,这样就避免了因为文件太大读取出问题。

while True:block = f.read(1024)if not block:break

2.5 fileinput 模块

Python 提供了 fileinput 模块,通过该模块中的 input( ) 函数,我们能同时打开指定的多个文件,还可以逐个读取这些文件中的内容。

fileinput 模块中 input( ) 该函数的语法格式如下:

fileinput.input (files="filename1, filename2, ...", inplace=Faise, backup=", bufsize=0, mode='r', openhook=None)

其中,各个参数的含义如下:

  • files:多个文件的路径列表。
  • inplace:用于指定是否将标准输出的结果写回到文件,此参数默认值为 False。
  • backup:用于指定备份文件的扩展名。
  • bufsize:指定缓冲区的大小,默认为 0。
  • mode:打开文件的格式,默认为 r(只读格式)。
  • openhook:控制文件的打开方式,例如编码格式等。
import fileinput# 常规读取当个文件
for line in fileinput.input('open_file.txt'):print(line, end='')# 读取多个文件 - 先读取完test01.txt再读取test02.txt
for line in fileinput.input(files=('test01.txt', 'test02.txt')):print(line, end='')

如果我们对文件进行修改,例如下面将 open_file.txt 里的数据转换为大写字母,则可以通过 backup 参数对文件进行备份。下面在修改完 open_file.txt 里面的数据后,也会同时生成一个 open_file.txt.bak 的文件,存储修改之前的数据,避免一些误操作导致文件被破坏。

import fileinput# 对文件进行处理并进行备份,并且转换为大写
for line in fileinput.input('open_file.txt', backup='.bak', inplace=True):print(line.upper(), end='')

2.6 linecache 模块

除了可以借助 fileinput 模块实现读取多个文件外,Python 还提供了 linecache 模块。和前者不同,linecache 模块擅长读取指定文件中的指定行。

换句话说,如果我们想读取某个文件中指定行包含的数据,就可以使用 linecache 模块。

import linecache
import string# 读取string模块中第3行的数据
print(linecache.getline(string.__file__,3), end='')     # Public module variables:# 读取普通文件open_file.txt文件中第2行的数据
print(linecache.getline('open_file.txt', 2), end='')    # HELLO WORLD2

3. 写文件

我们再回顾一下上面的内容,调用 open( ) 时提供两个实参,第一个是要打开的文件的名称,第二个则是告诉 Python 进行的模式,常见模式为读取模式(‘r’)、写入模式(‘w’ )、附加模式(‘a’)或读写模式(‘r+’)。如果省略了模式实参,Python 将以默认的只读模式打开文件。

Tips:
写入模式会再返回文件对象前清空该文件的内容,如果想在文件后直接添加内容而不是覆盖原有的内容,可以以附加模式打开文件。

3.1 write( ) 函数

Python 中的文件对象提供了 write( ) 函数,可以向文件中写入指定内容。

该函数的语法格式如下:

file.write(string)

其中:

  • file 表示已经打开的文件对象
  • string 表示要写入的字符串
f = open("test01.txt", 'w')
f.write("hello world1\n")
f.write("hello world2\n")
f.write("hello world3\n")
f.close()

3.2 writelines( ) 函数

Python 的文件对象中,不仅提供了 write( ) 函数,还提供了 writeliines( ) 函数,可以实现将字符串列表写入文件中。一般配合着 readlines( ) 函数使用,可以快速的将文件中的数据复制到其它文件中。

f_r = open("test01.txt", 'r')
list1 = f_r.readlines()f_w = open("test02.txt", 'w')
f_w.writelines(list1)

Tips:
Python 只能将字符串写入文本文件,如果要将数值数据存储到文本文件中,必须先使用函数 str( ) 将其转换为字符串格式。

3.3 json.dump( ) 和 json.load( )

  1. json.dump( )

在 Python 中,json.dump() 函数用于将数据对象序列化为 JSON 格式并将其写入文件。例如,下面我们可以将 numbers 列表存储于 numbers.json 文件中。

import json
numbers = [2,3,5,7,11,13]
filename = 'numbers.json'
with open(filename, 'w') as f:json.dump(numbers, f)
  1. json.load( )

json.load() 函数则用于从文件中读取 JSON 格式的数据并将其反序列化为 Python 对象。例如,下面我又将刚才存入 numbers.json 中的数据读取出来。

import json
filename = 'numbers.json'
with open(filename) as f:numbers = json.load(f)
print(numbers)

4. 文件指针

实现对文件指针的移动,文件对象提供了 tell( ) 函数和 seek( ) 函数。tell( ) 函数用于判断文件指针当前所处的位置,而 seek( ) 函数用于移动文件指针到文件的指定位置。

在这里插入图片描述

  1. tell( ) 函数

由于 read 函数每次调用完后,文件的指针会停留在当前读取完的数据的位置,下次再次读取时会从上次读取完的位置继续读取。而通过 tell( ) 函数可以判断当前指针处于哪个位置,tell( ) 函数的用法很简单,其基本语法格式如下:

file.tell()

现在我通过 read 函数分别读取 1 个字节以及 2 个字节的数据,然后调用 tell 函数可以发现当前文件的指针停留在了第 3 个字节的位置。

f = open('open_file.txt', 'r')
print(f.read(1))
print(f.read(2))
print(f.tell())  # 判断文件指针的位置

在这里插入图片描述

  1. seek( ) 函数

上面可知,文件读取完后指针不会重置,因此下次想从头或者其它位置开始读取,则可以使用 seek( ) 函数将文件指针移动至指定位置,该函数的语法格式如下:

file.seek(offset[, whence])

接着上面的案例,我们可以通过 seek 函数将函数指针移至开头的位置,这样下次读取时又会从头开始读取。

f = open('open_file.txt', 'r')
print(f.read(1))
print(f.read(2))
print(f.tell())  # 判断文件指针的位置
f.seek(0)
print(f.read(1))

在这里插入图片描述

相关文章:

【新人系列】Python 入门(十四):文件操作

✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…...

学成在线day06

上传视屏 断点续传 通常视频文件都比较大,所以对于媒资系统上传文件的需求要满足大文件的上传要求。http协议本身对上传文件大小没有限制,但是客户的网络环境质量、电脑硬件环境等参差不齐,如果一个大文件快上传完了网断了没有上传完成&…...

详细介绍HTTP与RPC:为什么有了HTTP,还需要RPC?

目录 一、HTTP 二、RPC 介绍 工作原理 核心功能 如何服务寻址 如何进行序列化和反序列化 如何网络传输 基于 TCP 协议的 RPC 调用 基于 HTTP 协议的 RPC 调用 实现方式 优点和缺点 使用场景 常见框架 示例 三、问题 问题一:是先有HTTP还是先有RPC&…...

ffmpeg 各版本号对应表格

想看看ffmpeg各个版本对应表, #! /bin/bashFF_PATH$1 CURRENTpwd RESULT"$CURRENT/test_version.txt"cd $FF_PATHif [ -f $RESULT ]; thenrm $RESULT fifor i in git branch -a | grep remotes/origin/release/ | grep -v HEAD | grep -v master; dogit…...

cesium 3Dtiles变量

原本有一个变亮的属性luminanceAtZenith,但是新版本的cesium没有这个属性了。于是 let lightColor 3.0result._customShader new this.ffCesium.Cesium.CustomShader({fragmentShaderText:void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial mate…...

如何分析Windows防火墙日志

Windows防火墙,也被称为Windows Defender Firewall,是一种内置的安全功能,可以主动监控和分析运行Windows操作系统的计算机上通过Windows防火墙的网络流量,主要目的是作为计算机和互联网或其他网络之间的屏障,使管理员…...

Linux下 history 命令输出时间

在 Linux 中,查看每条命令的执行时间。 文章目录 [toc]**1. 配置 Shell 以记录命令执行时间****1.1 Bash Shell****步骤:****注意事项:** **1.2 Zsh Shell****步骤:****注意事项:** 1. 配置 Shell 以记录命令执行时间 …...

ChatGPT/AI辅助网络安全运营之-数据解压缩

在网络安全的世界中,经常会遇到各种压缩的数据,比如zip压缩,比如bzip2压缩,gzip压缩,xz压缩,7z压缩等。网络安全运营中需要对这些不同的压缩数据进行解压缩,解读其本意,本文将探索一…...

导入 OpenCV for Android 的技巧

下载了 OpenCV for Android Sdk 以后,一头雾水,不知道从哪里下手,既不是jar、也不是aar,没关系,简单几步即可使用 OpenCV。 1、使用 Android Studio 打开 samples (示例)项目 2、同步项目&…...

云原生时代的轻量级反向代理Traefik

Traefik 是一个用于路由和管理网络流量的反向代理,同时也是一个支持多种协议(HTTP、HTTPS、TCP、UDP)的负载均衡器。它通过自动服务发现和动态配置,帮助开发者和运维团队轻松管理复杂的应用架构。 Traefik 的主要特点如下&#x…...

3D扫描对文博行业有哪些影响?

三维扫描技术对文博行业产生了深远的影响,主要体现在以下几个方面: 一、高精度建模与数字化保护 三维扫描技术通过高精度扫描设备,能够捕捉到文物的每一个细节,包括形状、纹理、颜色等,从而生成逼真的3D模型。这些模…...

linux安全管理-会话安全

文章目录 1 设置命令行界面超时退出2 配置终端登录失败策略3 配置 SSH 登录失败策略 1 设置命令行界面超时退出 1、检查内容 检查操作系统是否设置命令行界面超时退出。 2、配置要求 操作系统设置命令行界面超时退出。 3、配置方法 配置命令行界面超时时间,编辑/et…...

未来已来?AI技术革新改变我们的生活

在21世纪的今天,人工智能(AI)不再是一个遥远的概念,而是逐渐渗透到我们生活的方方面面。从智能家居到自动驾驶汽车,从个性化推荐系统到医疗诊断辅助,AI技术正在以惊人的速度发展,并深刻地影响着…...

列表上移下移功能实现

后台管理某列表需实现上移下移功能,并与前端展示列表排序相关。 现将开发完成过程笔记记录下来。 目录 列表增加属性 JQuery脚本 服务端 控制器 服务层 总结 列表增加属性 在循环渲染时,在table表格的tr上增加id和排序的属性值,以便传…...

[保姆式教程]使用labelimg2软件标注定向目标检测数据和格式转换

定向目标检测是一种在图像或视频中识别和定位对象的同时,还估计它们方向的技术。这种技术特别适用于处理有一定旋转或方向变化的对象,例如汽车、飞机或文本。定向目标检测器的输出是一组旋转的边界框,这些框精确地包围了图像中的对象&#xf…...

qt音频实战

一、Qt音频基础知识 1、QT multimedia 2、QMediaPlayer类:媒体播放器,主要用于播放歌曲、网络收音机等功能。 3、QMediaPlaylist类:专用于播放媒体内容的列表。 二、界面设计 三、代码 #include "mainwindow.h" #include "…...

【C++】static修饰的“静态成员函数“--静态成员在哪定义?静态成员函数的作用?

声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用 static修饰的成员函数,称之为静态成员函数。静态成员变量一定要在类外进行初始化 一、静态成员变量 1)特性 所有静态成员为所有类对象所共…...

『Linux学习笔记』linux系统有哪些方法计算文件的md5!

linux系统有哪些方法计算文件的md5! 文章目录 一. linux系统有哪些方法计算文件的md5!1. 使用 md5sum 命令(推荐)示例:输出:使用方法: 2. 使用 openssl 命令计算MD5值:输出:使用方法&#xff1…...

css vue vxe-text-ellipsis table 实现多行文本超出隐藏省略

分享 vxe-text-ellipsis table grid 多行文本溢出省略的用法 正常情况下如果需要使用文本超出隐藏,通过 css 就可以完成 overflow: hidden; text-overflow: ellipsis; white-space: nowrap;但是如果需要实现多行文本溢出,就很难实现里,谷歌…...

构建现代Web应用:FastAPI、SQLModel、Vue 3与Axios的结合使用

FastAPI介绍 FastAPI是一个用于构建API的现代、快速(高性能)的Web框架,使用Python并基于标准的Python类型提示。它的关键特性包括快速性能、高效编码、减少bug、智能编辑器支持、简单易学、简短代码、健壮性以及标准化。FastAPI自动提供了交互…...

图像边界填充算法详解与Python实现

目录 图像边界填充算法详解与实现1. 基础概念1.1 边界填充的意义与应用场景1.2 常见填充策略概览2. 零填充算法(Zero Padding)2.1 理论介绍2.2 Python实现及代码详解2.3 案例分析3. 镜像填充算法(Mirror Padding)3.1 理论介绍3.2 Python实现及代码详解3.3 案例分析4. 重复填…...

中兴机顶盒B860AV1.1刷机固件升级和教程「适用4/8G版」

准备工作: TTL 线(CH340G 按系统版本找到要对应驱动)下载 putty 软件拆开电视盒接好 TTL 线(2、5、6 针脚对应GND、RX、TX)在资源管理器的端口选项下找到 CH340G,记住端口号(如 COM4&#xff0…...

JVM 性能调优 -- CMS 垃圾回收器 GC 日志分析【Full GC】

前言: 上一篇我们分析了 Minor GC 的发生过程,因为 GC 日志没有按我们预估的思路进行打印,其中打印了 CMS 垃圾回收器的部分日志,本篇我们就来分析一下 CMS 垃圾收集日志。 JVM 系列文章传送门 初识 JVM(Java 虚拟机…...

重塑视频新语言,让每一帧都焕发新生——Video-Retalking,开启数字人沉浸式交流新纪元!

模型简介 Video-Retalking 模型是一种基于深度学习的视频再谈话技术,它通过分析视频中的音频和图像信息,实现视频角色口型、表情乃至肢体动作的精准控制与合成。这一技术的实现依赖于强大的技术架构和核心算法,特别是生成对抗网络&#xff0…...

C#中面试的常见问题001

1、c#访问修饰符有哪些 public:公共访问级别,成员可以被任何其他代码访问。private:私有访问级别,成员只能在定义它的类内部访问。protected:受保护的访问级别,成员可以被定义它的类及其子类访问。interna…...

webGis 气象站点数据解析渲染

1.站点数据说明 1.1 数据来源 站点数据来源多样。 1.2数据传输 实现前端的展示,数据传输的方式有: json等等 1.2数据格式 let arr [{ lat:1,//经纬度 lng:1, value:2//值 },{},...] 1.3站点数据转格点数据 turf.interpolate克里金插值qgis等ID…...

Vue3+Typescript+Axios+.NetCore实现导出Excel文件功能

前端代码 //导出Excel const exportMaintenanceOrderSettlementItemExcelClick async () > {let url ${VITE_APP_API_URL}/api/app/maintenance/settlement-service-item/${currentMaintenanceOrderId.value}/${currentMaintenanceOrderSettlementRow.value.id};let file…...

专属主机服务器和ECS服务器有什么区别?

‌专属主机服务器和ECS服务器的主要区别在于资源隔离、计费方式、管理权限等方面。‌ 资源隔离 ‌专属主机服务器‌:用户可以独享整台物理服务器资源,与其他租户的服务器物理隔离。这意味着用户不需要与其他租户共享物理资源,可以获取服务器…...

MySQL索引与分区:性能优化的关键

在开发过程中,随着数据量的不断增长,MySQL 查询的性能问题会逐渐显现。特别是在大数据量下,查询变得越来越慢,甚至可能导致系统崩溃。为了优化查询,MySQL 提供了 分区(Partitioning) 和 索引&am…...

VUE项目部署服务器之后刷新页面异常

情况: vue项目在本地完美运行,经过npm run build之后把dist目录上传到服务后。只有访问文件跟目录可以运行,但刷新之后会找不到相应的页面。 网上都说是hository路由的问题导致,需要修改成hash模式。如果不想修改为hash模式&…...

【实验13】使用预训练ResNet18进行CIFAR10分类

目录 1 数据处理 1.1 数据集介绍 1.2数据处理与划分 2 模型构建- Pytorch高层API中的Resnet18 3 模型训练 4 模型评价 5 比较“使用预训练模型”和“不使用预训练模型”的效果: 6 模型预测 7 完整代码 8 参考链接 1 数据处理 1.1 数据集介绍 数据规模&…...

如何将 GitHub 私有仓库(private)转换为公共仓库(public)

文章目录 如何将 GitHub 私有仓库转换为公共仓库步骤 1: 登录 GitHub步骤 2: 导航到目标仓库步骤 3: 访问仓库设置步骤 4: 更改仓库可见性步骤 5: 确认更改步骤 6: 验证更改注意事项 如何将 GitHub 私有仓库转换为公共仓库 在软件开发领域,GitHub 是一个广受欢迎的…...

进制的问题

蓝桥2015某题 计算数字x在进制p 下的各位数字之和 ​ int calc(int x,int p) {int res0;while(x){resx%p;//取当前位累加x/p;//去掉最低位}return res; }​...

【配置】如何下载和配置Android studio?

下载Android Studio 1、下载链接 https://developer.android.google.cn/studio?hlzh-cn​​​​​​​​​​​​​​​​​​​​ 注意:下载的时候要关闭代理服务器 2、安装软件 根据提示进行安装 3、配置proxy 这里建议配置代理而不是配置国内镜像源 所以…...

CA系统(file.h---申请认证的处理)

#pragma once #ifndef FILEMANAGER_H #define FILEMANAGER_H #include <string> namespace F_ile {// 读取文件&#xff0c;返回文件内容bool readFilename(const std::string& filePath);bool readFilePubilcpath(const std::string& filePath);bool getNameFro…...

Redis开发04:Redis的INFO信息解析

命令解释redis_versionRedis 的版本号&#xff0c;这里是 3.2.100。redis_git_sha1Redis 使用的 Git SHA1 校验值&#xff0c;表示当前代码的版本。redis_git_dirty如果 Redis 当前运行的代码是脏版本&#xff08;未提交的修改&#xff09;&#xff0c;该值为 1&#xff0c;否则…...

《Learn Three.js》学习(2)构建Three.js基本组件

前言&#xff1a; 本章将了解内容包括Three中的主要组件&#xff1b;THERE.SCENE对象的作用&#xff1b;几何图形和格网如何关联&#xff1b;区别正射/透视投影摄像机 基础理论知识&#xff1a; Three.scene&#xff08;场景图&#xff09;保存所有对象、光源和渲染所需的其他…...

VLLM 格式化LLM输出

文章目录 前言guided_jsonguided_choiceguided_regexguided_grammar总结 前言 vllm OpenAI Compatible Server 提供了格式化LLM输出的能力&#xff0c;默认的格式化解码后端应该是outlines 目前提供了四个参数来控制格式化输出&#xff0c;分别是&#xff1a; guided_json: …...

Java篇——Java通过JNA调用c++库时传参含有结构体时数据错乱的解决办法

Java通过JNA调用c库时传参含有结构体时&#xff0c;只继承Structure是不够的&#xff0c;还需要实现Structure.ByValue&#xff0c;或者强制指定结构体字节对齐。示例如下&#xff1a; 1、c库中的结构体定义&#xff1a; 2、java中结构体定义&#xff1a; 3、java中调用 如果没…...

sql分类

SQL&#xff08;Structured Query Language&#xff09;是一种用于管理和操作关系数据库管理系统&#xff08;RDBMS&#xff09;的编程语言。SQL 可以分为几个主要类别&#xff0c;每个类别都有其特定的用途和功能。以下是 SQL 的主要分类&#xff1a; 1. 数据定义语言&#x…...

LayaBox1.8.4实现战争迷雾效果

实现思路&#xff1a; 和Unity实现思路一样&#xff0c;可看我写的下面的一篇文章 战争迷雾FogOfWar---Unity中实现-CSDN博客 根据碰撞点可以计算出需要透明的位置&#xff0c;怎样计算如下&#xff1a; 根据迷雾mesh的长宽和纵向横向的的像素数可以得出&#xff0c;每个小方…...

Python打包元数据困境:约束的重要性

在Python社区中&#xff0c;一项旨在建立新的通用锁文件标准的努力正在展开&#xff0c;这一努力主要在Python讨论论坛上进行。此倡议凸显了创建一个让所有人都满意的标准化方案的难度。不同Python打包工具对锁文件应有的形态和用途有着略微不同的理解。然而&#xff0c;在这些…...

第29天 MCU入门

目录 MCU介绍 MCU的组成与作用 电子产品项目开发流程 硬件开发流程 常用元器件初步了解 硬件原理图与PCB板 常见电源符号和名称 电阻 电阻的分类 贴片电阻的封装说明&#xff1a; 色环电阻的计算 贴片电阻阻值计算 上拉电阻与下拉电阻 电容 电容的读数 二极管 LED 灯电路 钳位作…...

三分钟快速掌握——Linux【vim】的使用及操作方法

一、vim的使用 vim是一个文本编辑器 非常小巧轻便 1.1如何进入vim编辑器 方法一&#xff1a; 首先使用touch 1.c 创建一个源文件 然后使用vim 1.c进入 方法二&#xff1a; 直接使用指令 vim 2.c 会直接创建一个2.c的源文件 退出时记得保存&#xff08;使用wq或者x&am…...

安达发|制造业APS智能优化排产软件的四类制造模型解决方案

在制造业中&#xff0c;APS&#xff08;高级计划和排程系统&#xff09;智能优化排产软件的应用越来越广泛。它通过集成先进的算法和模型&#xff0c;帮助企业提高生产效率、降低成本并提升客户满意度。针对不同类型的生产需求&#xff0c;APS软件提供了四类制造模型解决方案&a…...

屏幕分辨率|尺寸|颜色深度指纹修改

一、前端通过window.screen接口获取屏幕分辨率 尺寸 颜色深度&#xff0c;横屏竖屏信息。 二、window.screen c接口实现&#xff1a; 1、third_party\blink\renderer\core\frame\screen.idl // https://drafts.csswg.org/cssom-view/#the-screen-interface[ExposedWindow ] …...

Mac安装及合规无限使用Beyond Compare

文章目录 Beyond CompareBeyond Compare简介Beyond Compare安装Beyond Compare到期后继续免费使用 Beyond Compare Beyond Compare简介 Beyond Compare 是一款由 Scooter Software 开发的文件和文件夹比较工具。它主要用于对比两个文件或文件夹之间的差异&#xff0c;并支持文…...

记录一次 k8s 节点内存不足的排查过程

背景&#xff1a;前端服务一直报404&#xff0c;查看k8s日志&#xff0c;没发现报错&#xff0c;但是发现pods多次重启。 排查过程&#xff1a; 查看pods日志&#xff0c;发现日志进不去。 kubectrl logs -f -n weave pod-name --tail 100查看pod describe kubectl describ…...

方差分析、相关分析、回归分析

第一章&#xff1a;方差分析 1.1 方差分析概述 作用: 找出关键影响因素&#xff0c;并进行对比分析&#xff0c;选择最佳组合方案。影响因素: 控制因素&#xff08;人为可控&#xff09;和随机因素&#xff08;人为难控&#xff09;。控制变量的不同水平: 控制变量的不同取值…...

【JavaEE初阶 — 网络原理】初识网络原理

目录 1. 网络发展史 1.1 独立模式 1.2 网络互连 1.2.1 网络互联的背景 1.2.2 网络互联的定义 1.3 局域网LAN 1.4 广域网WAN 2. 网络通信基础 2.1 IP地址 2.2 端口号 2.3 认识协议 2.4 五元组 2.5 协议分层 2.5.1 分…...