python基础语法(4)

基础语法

  • 前言
  • 文件
    • 文件是什么
    • 文件路径
    • 文件操作
    • 1.打开文件
    • 2. 关闭文件
    • 3.写文件
    • 4. 读文件
    • 5.上下文管理器
    • 使用库
      • 标准库
      • 第三方库


前言

本文基于pycharm编译器,也可以使用Anaconda 里的编译器,将讲解一些python的一些基础语法知识,是对上篇文章的补充.


文件

文件是什么

文件是计算机中存储数据的一种方式,指计算机中用来存储数据、程序、图像、音频、视频等的一种信息存储单位。
文件可以包含多种格式的数据和不同类型的内容,如文本、图像、音频、视频等,其文件格式也是多种多样的,例如TXT、PDF、JPG、MP3、MP4等。
文件通常存储在计算机硬盘、U盘、移动硬盘等存储设备中,用户可以通过文件管理器或专业软件等方式进行管理和使用。

内存和硬盘都是计算机存储数据的设备。内存是临时存储设备,也被称为随机访问存储器(RAM),其作用是存储系统正在运行的程序和处理数据所需的临时数据。当程序被关闭或计算机被关闭时,内存中的数据就会被清除。硬盘是永久性存储设备,也被称为持久性存储器。它存储着计算机的操作系统、程序文件、文档、图片、音乐等文件,不会因为计算机关闭而丢失。内存和硬盘之间的关系是:计算机在运行程序时,会将程序及其需要处理的数据从硬盘中加载到内存中,然后在内存中进行处理和运行。当程序运行完毕后,计算机将数据再次写回硬盘,以便后续使用。因此,内存和硬盘在计算机运作过程中密不可分,两者的协调使用可以提高计算机的运行速度和效率。

  1. 内存的空间更小,硬盘空间更大
  2. 内存访问更快,硬盘访问更慢
  3. 内存成本更贵,硬盘成本更便宜
  4. 内存的数据易失,硬盘的数据持久化存储.

数据都是保存在硬盘上的

文件路径

一个机器上, 会存在很多文件,为了让这些文件更方面的被组织,往往会使用很多的"文件夹"(也叫做目录)来整理文件.
实际一个文件往往是放在一系列的目录结构之中的.
为了方便确定一个文件所在的位置 使用文件路径来进行描述
在这里插入图片描述

例如,QQ.exe这个文件,描述这个文件的位置,就可以使用路径"D:\QQ\Bin\QQ.exe"来表示.
D: 表示 盘符. 不区分大小写.
每一个\ 表示一级目录. 当前 QQ.exe 就是放在"D 盘下的QQ目录下的 Bin 目录中".
目录之间的分隔符,可以使用\ 也可以使用 /.一般在编写代码的时候使用 / 更方便.
上述以 盘符 开头的路径, 我们也称为 绝对路径.
除了绝对路径之外,还有一种常见的表示方式是 相对路径,相对路径需要先指定一个基准目录,然后以基准目录为参照点,间接的找到目标文件.
描述一个文件的位置, 使用 绝对路径 和 相对路径 都是可以的. 对于新手来说, 使用 绝对路径 更简单更好理解,也不容易出错.

文件操作

要使用文件, 主要是通过文件来保存数据,并且在后续把保存的数据读取出来.
但是要想读写文件,需要先 “打开文件”,读写完毕之后还要 “关闭文件”.

在计算机,把远程操纵的“遥控器”称为句柄

1.打开文件

使用内建函数 open 打开一个文件.

f = open('d:/test.txt', 'r')

第一个参数是一个字符串,表示要打开的文件路径
第二个参数是一个字符串,表示打开方式. 其中 r 表示按照读方式打开.w 表示按照写方式打开. a 表示追加写方式打开.
如果打开文件成功,返回一个文件对象. 后续的读写文件操作都是围绕这个文件对象展开.
如果打开文件失败(比如路径指定的文件不存在),就会抛出异常.

  • 'r':只读模式,在该模式下打开的文件只能读取,不能修改和写入。
  • 'w':写入模式,在该模式下打开的文件可供写入,如果该文件已经存在,则会清空原有内容,如果不存在,则会创建新文件。
  • 'a':追加模式,在该模式下打开的文件可以在文件末尾进行写入。

以下是打开文件并读取其内容的代码示例:

# 打开文件
file = open("example.txt", "r")# 读取文件内容
content = file.read()# 输出内容
print(content)# 关闭文件
file.close()

在读取完文件后,一定要记得关闭文件,避免造成资源浪费和文件损坏。

2. 关闭文件

  • 使用 close 方法关闭已经打开的文件.
f.close()

使用完毕的文件要记得及时关闭!

  • 一个程序能同时打开的文件个数, 是存在上限的.
# 打开文件个数的上限
flist = []
count = Θ
while True:f = open('d:/Python环境/test.txt', 'r')flist.append(f)count += 1
print(f'打开文件的个数: {count}')

在系统中可以通过设置,来改变打开文件的上限

  • 在Python中关闭文件的语法是:file_object.close()。

例如,在打开一个名为"example.txt"的文件并读取文件中的内容后,需要关闭文件,可以使用以下代码:

file = open("example.txt", "r")
content = file.read()
print(content)
file.close()   # 关闭文件

在关闭文件之前,建议始终使用file.closed方法先检查文件是否已经关闭,以避免出现错误。

3.写文件

文件打开之后, 就可以写文件了.
写文件, 要使用写方式打开,open 第二个参数设为

  • 使用 write 方法写入文件.
f = open('d:/test.txt', 'w')
f.write('hello')
f.close()

用记事本打开文件, 即可看到文件修改后的内容.

  • 如果是使用 ‘r’ 方式打开文件,则写入时会抛出异常.
f = open('d:/test.txt', 'r')
f.write('hello')
f.close()

使用’w’一旦打开文件成功,就会清空文件原有的数据.

  • 使用 ‘a’ 实现"追加写",此时原有内容不变,写入的内容会存在于之前文件内容的末尾.
f = open('d:/test.txt', 'w')
f.write('hello')
f.close()
f = open('d:/test.txt', 'a')
f.write('world')
f.close()

4. 读文件

读文件内容需要使用 ‘r’ 的方式打开文件

  • 使用 read 方法完成读操作. 参数表示"读取几个字符"
f = open('d:/test.txt', 'r')
result = f.read(2)
print (result)
f.close()

如果文件是多行文本, 可以使用 for 循环一次读取一行.

# 更常见的需求,是按行来读取
#最简单的办法,直接 for 循环.
f = open('d:/Python环境/test.txt', 'r', encoding='utf8')
for line in f:
print(f'line = {line}', end='')#末尾为空
f.close()

先构造一个多行文件.

f = open('d:/test.txt', 'r')
for line in f:
print(f'line = {line}')
f.close()

Python读取文件的方法:

  1. 使用open函数打开文件,指定文件名和读取模式(‘r’)。
  2. 使用read方法读取整个文件内容,或者使用readline方法读取一行内容,或者使用readlines方法读取所有行并返回一个列表。
  3. 关闭文件,使用close方法进行关闭,释放文件资源。
# 使用 readlines 方法直接把整个文件所有内容都读出来,按照行组织到一个列表里.
f = open('d:/Python环境/test.txt', 'r', encoding='utf8')
print(lines)
lines = f.readlines()
f.close()

代码示例:

# 打开文件
f = open('example.txt', 'r')# 读取文件内容
content = f.read()# 输出文件内容
print(content)# 关闭文件
f.close()

注意:

  • 在使用open函数打开文件后,如果不进行关闭,会占用系统资源,因此必须使用close方法进行关闭。
  • 在程序结束时,Python会自动关闭所有未关闭的文件,但最好习惯性地使用close方法手动关闭文件。

在Python中读取文件时,可以使用open函数打开文件并指定文件的编码方式。例如:

with open('filename.txt', 'r', encoding='utf-8') as f:content = f.read()

其中,'utf-8’代表文件的编码方式。如果不指定编码方式,则默认使用系统默认编码方式进行读取。如果文件的编码方式与指定的不一致,则可能会导致乱码或错误的解析。

5.上下文管理器

Python的上下文管理器是一种用于管理资源的特殊对象,它支持用"with"语句来简化资源管理的代码。上下文管理器可以确保资源(例如文件或网络连接等)在使用之后正确地释放。

在Python中,上下文管理器通过实现 “enter” 和 “exit” 这两个特殊方法来实现。当使用 “with” 语句打开一个上下文管理器时,会先调用 “enter” 方法,接着执行语句块,最后调用 “exit” 方法释放资源。

例如,以下是一个用于打开文件的上下文管理器的示例:

class MyFile:def __init__(self, filename):self.filename = filenamedef __enter__(self):self.file = open(self.filename, 'r')return self.filedef __exit__(self, exc_type, exc_value, traceback):self.file.close()with MyFile('example.txt') as file:for line in file:print(line)

with MyFile('example.txt') as file 的意思是,给file赋值为MyFile('example.txt')

在上述示例中,类MyFile实现了 enterexit 方法,这使得该类的实例可以作为上下文管理器使用。在使用 “with” 语句时,将会调用 enter 方法来打开文件,并返回文件对象,接着就可以在语句块中使用该文件对象。在语句块执行完毕后,将会调用 exit 方法来关闭文件。

这个可以和c++的智能指针关联

使用库

库 就是是别人已经写好了的代码, 可以让我们直接拿来用.
一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习, 一方面取决于生态是否完备.
所谓的"生态"指的就是语言是否有足够丰富的库,来应对各种各样的场景.
实际开发中,也并非所有的代码都自己手写,而是要充分利用现成的库, 简化开发过程.
按照库的来源,可以大致分成两大类

  • 标准库: Python 自带的库. 只要安装了 Python 就可以直接使用.
  • 第三方库: 其他人实现的库. 要想使用, 需要额外安装.

咱们自己也可以实现 “第三方库” 发布出去, 交给别人来使用.

标准库

认识标准库
Python 自身内置了非常丰富的库.
在 Python 官方文档上可以看到这些库的内容.
Python标准库是Python内置的一组模块,包含了大量的常用函数和工具,如文件I/O、网络通信、字符串操作、数据结构、日期和时间处理、正则表达式、多线程等。Python标准库是Python开发者非常常用的一组工具,使用Python标准库可以大大提高开发效率。

Python标准库包含以下模块:

  • 日期和时间(datetime)
  • 数学函数(math)
  • 正则表达式(re)
  • 文件操作(os、io)
  • 网络编程(socket、http)
  • 数据库操作(sqlite3)
  • 多线程编程(threading、queue)
  • 进程管理(subprocess)
  • 图形界面开发(tkinter)
  • XML处理(xml、xml.dom、xml.sax)
  • 邮件处理(smtplib、email)

除了标准库,Python还有大量的第三方库和框架,如NumPy、Pandas、Matplotlib、Django等,这些库和框架大大扩展了Python的功能和应用领域。

第三方库

Python第三方库是指由Python社区中的开发者所开发的,可供其他Python程序员使用的外部库,可以提供各种功能,如图形界面、数据分析、网络编程、爬虫、机器学习等等。

以下是一些常见的Python第三方库:

  • NumPy:用于处理科学计算、数学计算和数值分析的库。

  • Pandas:用于数据处理和数据分析的库,可以用来读写各种格式的数据文件。

  • Matplotlib:用于绘制二维图表和三维图表的库,可生成多种类型的图形。

  • Scikit-learn:用于机器学习和数据挖掘的库,包括常用的机器学习算法。

  • Requests:用于发送HTTP请求和处理HTTP响应的库,可以用于爬虫和网页自动化测试等等。

  • Django:用于Web应用程序开发的框架,提供了完整的MVC架构、自带ORM、模版引擎、路由分发和中间件等功能。

  • Flask:轻量级的Web应用程序框架,提供了路由分发、模版引擎、中间件等功能,适合用于小型Web应用程序的开发。

  • Pygame:用于开发游戏的库,提供了图形界面和音频播放等功能。

  • TensorFlow:用于机器学习和深度学习的库,支持GPU加速和分布式计算,可用于实现各种机器学习和深度学习模型。

例如,举一个时间序列的例子

#import datetime
#from datetime import datetime
import datetime as dt
# 先构造 datetime 变量
date1 = dt.datetime(year=2012, month=2, day=14)
date2 = dt.datetime(year=2016, month=2, day=3)
print(date2 - date1)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes技术与架构-网络 3

Kubernetes集群支持为Pod或者Service申请IPV4或者IPV6的地址空间。 kube-apiserver --service-cluster-ip-range<IPv4 CIDR>,<IPv6 CIDR> kube-controller-manager --cluster-cidr<IPv4 CIDR>,<IPv6 CIDR> --service-cluster-ip-range<IPv4 CI…

论坛介绍|COSCon'23 开源百宝箱(T)

众多开源爱好者翘首期盼的开源盛会&#xff1a;第八届中国开源年会&#xff08;COSCon23&#xff09;将于 10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01;各位新老朋友们&#xff0c;欢迎到成都&a…

proxmox pve /dev/mapper/pve-root扩容

vgs3 pvs4 vgs5 lvs6 lvremove /dev/pve/data8 lvresize -l 100%FREE /dev/pve/root9 resize2fs /dev/mapper/pve-root 10 history

安卓 实现60s倒计时的CountDownTimer(小坑)

安卓 实现60s倒计时的CountDownTimer&#xff08;小坑&#xff09; 前言一、CountDownTimer 是什么&#xff1f;二、代码示例1.使用2.小坑的点误差及时取消 总结 前言 前段时间写倒计时没有用线程&#xff0c;想换一种实现方式结果踩了个小坑&#xff0c;特此记录。 一、Count…

Rancher部署K8S集群

一、介绍 随着容器的普及和Kubernetes 的日渐成熟&#xff0c;企业内部运行多个Kubernetes 集群已变得颇为常见&#xff0c;然而部署kubernetes集群的方式也多样化&#xff0c;二进制部署、rancher、kubeadm、minikube等。然而本篇文章主要讲解的是如何使用rancher快速部署一个…

Linux笔记之diff工具软件P4merge的使用

Linux笔记之diff工具软件P4merge的使用 code review! 文章目录 Linux笔记之diff工具软件P4merge的使用1.安装和配置2.使用&#xff1a;p4merge a.cc b.cc3.配置git 参考博文: Ubuntu Git可视化比较工具 P4Merge 的安装/配置及使用 1.安装和配置 $ wget https://cdist2.per…

Linux简单安装ffmpeg 实现用PHP压缩音频

一、下载安装 1、官方下载地址&#xff1a;Download FFmpeg 2、下载完上传到服务器然 然后解压就算安装完成了 tar -xf ffmpeg-git-amd64-static.tar.xz 3、然后配置一下全局变量&#xff08;当然也可以不用配置 使用的时候带上文件路径就行&#xff09; cd /usr/bin ln -s…

【Gensim概念】02/3 NLP玩转 word2vec

第二部分 句法 六、句法模型&#xff08;类对象和参数&#xff09; 6.1 数据集的句子查看 classgensim.models.word2vec.BrownCorpus(dirname) Bases: object 迭代句子 Brown corpus (part of NLTK data). 6.2 数据集的句子和gram classgensim.models.word2vec.Heapitem(c…

Web APIs——事件监听以及案例

1、事件监听 什么是事件&#xff1f; 事件是在编程时系统内发生的动作或者发生的事情 比如用户在网页上单击一个按钮 什么是事件监听&#xff1f; 就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立即调用一个函数做出响应&#xff0c;也称为绑定事…

pymavlink简单使用

环境 windows10 python3.11 pymavlink2.4.40 工具 虚拟串口工具 Virtual Serial Port Driver 6.9 串口/网络调试助手 sscom5.13.1.exe 串口通信 虚拟串口 COM1, COM2 调试助手连接COM2 pymavlink连接COM1 from pymavlink import mavutil import timeconnect mavut…

UE4 Ultradynamicsky进行地面交互

第一步&#xff1a; 找到地面材质&#xff0c;进入地面材质 找到该节点 找到之前本该连在这里的&#xff0c;现在连到这个节点上&#xff0c;然后把这个节点的输出连到材质输出节点上 新建一个物理材质 然后给过来 找到Ultra_Dynamic_Weather&#xff0c;把Enable Dynamic Lan…

【ArcGIS模型构建器】03:多个shp批量按属性分割(多个县区批量提取乡镇)

文章目录 一、数据预览二、模型构建三、保存模型一、数据预览 加载实验数据: 本试验实现将两个县区的数据分割为乡镇数据。 二、模型构建 1. 添加数据文件夹 将县区数据所在的根目录文件夹拖进模型。 2. 添加要素类迭代器 插入→迭代器→要素类。 用连接工具,将数据文件…

基于Java的疫苗接种管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

用Rust和cURL库做一个有趣的爬虫

以下是一个使用 Rust 和 cURL 库的下载器程序&#xff0c;用于从wechat下载音频。此程序使用了 [/get_proxy] 提供的代码。 extern crate curl;use std::io::{self, Read}; use std::process::exit; use curl::easy::Easy;fn main() {let url "https://www.wechat.com/au…

第01章-Java语言概述

目录 1 常见DOS命令 常用指令 相对路径与绝对路径 2 转义字符 3 安装JDK与配置环境变量 JDK与JRE JDK的版本 JDK的下载 JDK的安装 配置path环境变量 4 Java程序的编写与执行 5 Java注释 6 Java API文档 7 Java核心机制&#xff1a;JVM 1 常见DOS命令 DOS&#xff08;…

.obj模型文件(带材质和纹理)合并的基本思路

1、将v开头的顶点信息依次拷贝到合并新.obj中 2、将vt纹理坐标依次拷贝到合并新.obj中 3、f&#xff08;面&#xff09;的合并 步骤&#xff1a; &#xff08;1&#xff09;第一个obj文件的f&#xff08;面&#xff09;原封不动拷进新.obj中 &#xff08;2&#xff09;第二个…

GoLong的学习之路(五)语法之数组

书接上回&#xff0c;上回书说到&#xff0c;循环语句&#xff0c;在go中循环语句的少了whlie这个关键词&#xff0c;但是与之for可以改这个改这个特点。并且在终止关键词中&#xff0c;又有标签可以方便&#xff0c;停止。这次说数组 文章目录 Array(数组)数组的初始化方法一方…

STM32入门F4

学习资料&#xff1a;杨桃电子&#xff0c;官网&#xff1a;洋桃电子 | 杜洋工作室 www.doyoung.net 嵌入式开发核心宗旨&#xff1a;以最适合的性能、功能、成本来完成最有性价比的产品开发。 1.为什么要学F407 STM32F103系列与STM32F407系列对照表&#xff1a; 2.F4系列命…

设计院图纸加密防泄密方案——天锐绿盾加密软件@德人合科技

天锐绿盾是一款专业的企业信息化防泄密软件&#xff0c;主要针对文档全生命周期进行加密保护&#xff0c;包括创建、修改、传输、归档、分发、销毁等全过程。它可以加强外发数据及终端离线的管理&#xff0c;对正常授权外带范围内的数据流程进行规范。设计图纸、文档等成果数据…

【C++入门篇】保姆级教程篇【上】

目录 一、第一个C程序 二、C命名空间 1&#xff09;什么是命名空间&#xff1f; 2&#xff09;命名空间的使用 3&#xff09; std库与namespace展开 4&#xff09;命名空间的嵌套使用 三、输入输出方式 四、缺省参数 1&#xff09;什么是缺省参数&#xff1f; 2&#xff0…