Python基础语法入门(第二十天)——文件操作

news2025/1/20 1:48:42

一、基础内容

在Python中,路径可以以不同的表现形式进行表示。以下是一些常用的路径表现形式:

1. 绝对路径:它是完整的路径,从根目录开始直到要操作的文件或文件夹。在Windows系统中,绝对路径以盘符开始,如`C:\Users\username\Documents\file.txt`;在Unix/Linux系统中,绝对路径从根目录`/`开始,如`/home/username/Documents/file.txt`。

2. 相对路径:它是相对于当前工作目录的路径。相对路径不包含根目录,而是根据当前位置来定位。例如,当前工作目录是`/home/username/Documents`,要操作的文件在此目录下,则可以使用相对路径`file.txt`。

3. 转义字符:在字符串中,路径中的特殊字符可以使用转义字符进行表示。例如,反斜杠`\`表示目录路径中的分隔符,在Windows中表示为`\`,在Unix/Linux中表示为`/`。

4. 原始字符串:在字符串前加`r`作为前缀,可以创建原始字符串,其中的特殊字符不会被转义。原始字符串特别适用于Windows路径,因为Windows路径中包含许多反斜杠。例如,`r"C:\Users\username\Documents\file.txt"`。

在实际使用中,可以根据不同的操作系统和需求选择适合的路径表现形式。另外,Python提供了os.path模块,其中包含了一些函数和方法用于处理路径,例如os.path.join()用于连接路径组件、os.path.abspath()用于获取绝对路径等。这些函数和方法可以帮助我们更方便地处理路径。

1.1 路径拼接

在不同的操作系统中,路径使用的斜杠并不是相同的,但是可以通过os.path.join()来拼接出正确的路径,代码如下:

import os
print(os.path.join('C', 'Program Files', 'Common Files'))

# 输出结果:
# C\Program Files\Common Files

1.2 路径名与文件名分离

os.path.dirname(path):返回path参数中最后一个斜杠之前的内容,即:返回目录名称
os.path.basename(path):返回path参数中最后一个斜杠之后的内容,即:返回基本名称

在这里插入图片描述

import os
path = r'C:\Windows\System32\666.exe'
print(os.path.dirname(path))    #获取目录名称
print(os.path.basename(path))   #获取基本名称

# 输出结果:
# C:\Windows\System32
# 666.exe

os.path.split()获取路径的目录名称和基本名称,返回由两个字符串组成的元组

import os

path = r'C:\Windows\System32\666.exe'
print(os.path.split(path))

# 输出结果:
# ('C:\\Windows\\System32', '666.exe')

1.3 文件夹创建

使用os.makedirs创建文件夹,并且会创建出中间所有必要的中间文件夹,来确保完整路径名存在。使用os.path.exists()能够判断路径是否存在,存在则返回True否则False

import os

if not os.path.exists(r'D:\Program Files\666\777\888'):   #证明不存在此路径
	os.makedirs(r'D:\Program Files\666\777\888')

1.4 路径有效性

在1.3中os.path.exists()判断路径是否存在,除此之外还可以判断文件或者某个文件夹是否存在。

os.path.exists:如果路径存在(可以是文件、文件夹),就返回True
os.path.isfile:如果路径存在,并且是个文件,就返回True
os.path.isdir:如果路径存在,并且是个文件夹,就返回True
import os

print(os.path.exists(r'C:\Windows'))                    #检查路径是否存在
print(os.path.isfile(r'C:\Windows\System32\666.exe'))  #检查文件是否存在
print(os.path.isdir(r'C:\Windows'))                     #检查文件夹是否存在

# 输出结果:
# True
# True
# True

二、文件读写

在Python中,文件的读写操作通常使用open()函数来实现。其可操作的文件对象包括(但不限于)以下几种类型,本节中的案例皆以文本类型txt为例

1.文本文件(Text Files):这是最常见的文件类型,包含文本内容。使用open()函数以文本模式("r""w"等)打开文本文件。

2.二进制文件(Binary Files):这些文件包含二进制数据,例如图片、视频、音频等。使用open()函数以二进制模式("rb""wb"等)打开二进制文件。

3.CSV文件(Comma-Separated Values Files):这些文件以逗号或其他特定字符作为字段分隔符,存储表格数据。可以使用open()函数以文本模式打开CSV文件,并使用适当的处理方法(例如csv模块)读取或写入CSV文件。

4.JSON文件(JavaScript Object Notation Files):这些文件以JSON格式存储数据,常用于数据交换。可以使用open()函数以文本模式打开JSON文件,并使用适当的处理方法(例如json模块)读取或写入JSON文件。

5.XML文件(eXtensible Markup Language Files):这些文件以XML格式存储数据,常用于数据交换和配置文件。可以使用open()函数以文本模式打开XML文件,并使用适当的处理方法(例如xml.etree.ElementTree模块)读取或写入XML文件。

除了上述类型的文件,open()函数还可以操作其他类型的文件,例如配置文件(INI、YAML等)、日志文件(Log files)、数据库文件等。

2.1 open()函数的基本使用

open()函数是Python中用于打开文件的内置函数。它的基本使用形式如下:

file = open(file_path, mode)

其中,file_path是文件的路径(可以是相对路径或绝对路径),mode是打开文件的模式,默认情况下为r只读模式。

2.2 常用的文件打开模式

"r":只读模式,用于读取文件内容。
"w":写入模式,用于写入文件内容。如果文件已存在,会清空文件内容;如果文件不存在,则会创建新文件。
"a":追加模式,用于向文件末尾追加内容。如果文件不存在,则会创建新文件。
"rb":二进制读取模式,用于读取二进制文件。
"wb":二进制写入模式,用于写入二进制文件。
"ab":二进制追加模式,用于向二进制文件末尾追加内容。
"rt":文本读取模式,用于读取文本文件(默认模式)。
"wt":文本写入模式,用于写入文本文件。
"at":文本追加模式,用于向文本文件末尾追加内容。

需要注意的是,在使用open()函数打开文件后,应该始终在不需要文件时关闭文件,以释放资源。可以使用close()方法来关闭文件。

除了使用open()函数来打开文件,还可以使用with语句来自动管理文件的打开和关闭,可以避免忘记关闭文件的问题:

file = open("path/to/file.txt", "r")
content = file.read()
file.close()
# 两种写法效果一样,下方写法不用再手动关闭文件,在with代码块结束时会自动关闭文件
with open("path/to/file.txt", "r") as file:
    content = file.read()
    print(content)

with语句块中,文件对象在with块的范围内有效,并在with块结束时自动关闭文件。这样可以确保文件在使用完毕后正确关闭。

2.3 常用的文件操作

1.打开文件:使用open()函数打开一个文件。可以指定文件的名称和打开模式(读取模式、写入模式等)。

file = open("filename.txt", "r")  # 以只读模式打开文件

2.读取文件内容:使用read()readline()readlines()方法读取文件的内容。

content = file.read()      # 读取整个文件
line = file.readline()    # 读取一行内容
lines = file.readlines()  # 读取所有行的内容并返回一个列表

3.写入文件:使用write()方法向文件中写入内容。写入的时候需要注意文件打开的模式是否是二进制读写模式,以此来判断是否需要将写入的内容进行二进制转换。

file.write("Hello, World!")  # 在文件中写入内容

4.关闭文件:使用close()方法关闭文件,释放资源。

file.close()  # 关闭文件

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

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

相关文章

Linux系列讲解 —— FTP协议的应用

简单介绍一下FTP文件传输协议在linux系统中的应用。 目录 0. 基本概念1. FTP Server1.1 安装FTP Server1.2 FTP Server开启和关闭1.3 查看FTP Server是否开启1.4 FTP服务器配置 2. FTP Client2.1 lftp2.2 ftp2.3 sftp2.4 文件资源管理器集成的ftp和sftp 3. ftp常用命令 0. 基本…

【C++11保姆级教程】auto和decltype

文章目录 前言总结一、auto1.初识auto关键字 2.auto使用二、decltype1.初识decltype2.使用decltype 总结 前言 在C11中引入了一些新的关键字和特性,其中包括auto和decltype。这两个关键字提供了更方便、更灵活的类型推断机制,使得代码编写更加简洁和可读…

TCS3200颜色识别模块

TCS3200颜色识别模块 TCS3200简介 供电电源(2.7V to 5.5V)可配置颜色滤波器和输出信号频率高分辨率光强转换到频率(工作原理) TCS3200工作原理 TCS3200是TAOS公司推出的可编程彩色光到频率的转换器,它把可配置的硅光电二极管与电流频率转换器集成在一个单一的CMO…

Python找出列表中出现次数最多的元素三种方式

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 方式一: 原理:创建一个新的空字典,用循环的方式来获取列表中的每一个元素,判断获取的元素是否存在字典中的key,如果不存在的话,将元素作为key&#xf…

如何保证事件的闭环处理

所谓的闭环,就是指告警发出、认领、协作处理、问题恢复、复盘改进的整个过程。 排班,专人做专事 ​这个手段听起来并不高大上,但确实非常有效。值班期间虽然提心吊胆的,生怕背锅,但因为是轮班制,心里总有…

C语言笔试训练【第12天】

文章目录 1、请阅读以下程序,其运行结果是( )2、假设编译器规定 int 和 short 类型长度分别为32位和16位,若有下列C语言语句,则 y 的机器数为( )3、下列程序的输出结果是什么( &…

LC-链表的中间节点(遍历)

LC-链表的中间节点(遍历) 链接:https://leetcode.cn/problems/middle-of-the-linked-list/description/ 描述:给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个…

OpenCV-Python中的图像处理-图像直方图

OpenCV-Python中的图像处理-图像直方图 图像直方图统计直方图绘制直方图Matplotlib绘制灰度直方图Matplotlib绘制RGB直方图 使用掩膜统计直方图直方图均衡化Numpy图像直方图均衡化OpenCV中的直方图均衡化CLAHE 有限对比适应性直方图均衡化 2D直方图OpenCV中的2D直方图Numpy中2D…

基于Python科研论文绘制学习 - task1

绘制原则 必要性(避免图多字少) 易读性(完整准确的标题、标签) 一致性(配图需要和上下文一致) 尝试运行代码的时候出现了很多bug,基本都是围绕Scienceplots库的,在更新pip、pandas…

Gin安装解决国内go 与 热加载

get 方式安装超时问题,国内直接用官网推荐的下面这个命令大概率是安装不成功的 go get -u github.com/gin-gonic/gin 可以在你的项目目录下执行下面几个命令: 比如我的项目在E:\Oproject\zl cmd E:\Oproject\zl>就在目录下执行 go env -w GO111…

HCIP学习--MPLS

MPLS-多协议标签交换 标签交换 基于2.5层的标签号进行路由行为,开始传输数据包的时候需要查询两张表,一个路由表一个ARP表然后人们就想可不可以少查点表,然后MPLS就出现了,MPLS就是是在数据包的2.5层压入一个标签号,路由器基于2…

人大进仓数据库ksql命令基础

测试环境信息: 系统为银河麒麟V10 数据库为Kingbase ES V8 数据库安装目录为/opt/Kingbase/ES/V8 ksql命令位于/opt/Kingbase/ES/V8/Server/bin下 使用--help获取帮助 续上图 1.查看数据库列表 ./ksql -U system -l 2.查看数据库版本 ./ksql -V 3.连接指定的数据库tes…

计算机技术综合布线实训室建设方案

一、计算机技术综合布线系统概述 综合布线是指在建筑物或办公室内部,将各种通信设备(如计算机、电话、视频监控、音频设备等)通过统一的电缆系统连接起来的一种网络布线方式。它是构建局域网(LAN)和数据中心基础设施的…

Revit SDK 介绍:PanelSchedule 配电盘明细表

前言 这个例子介绍 Revit 的配电盘明细表,PanelSchedule。Revit 的电器专业在国内用的并不是十分广泛,但从功能上来说还是比较完整的。 内容 这个例子里有三个命令: PanelScheduleExport - 导出配电盘明细表InstanceViewCreation - 创建配…

HTML5的介绍和基本框架

目录 HTML5 HTML5介绍 HTML5的DOCTYPE声明 HTML5基本骨架 html标签 head标签 body标签 title标签 meta标签 在vscode中写出第一个小框架 HTML5 HTML5介绍 HTML5是用来描述网页的一种语言,被称为超文本标记语言。用HTML5编写的文件,后缀以.ht…

JVM编译优化

即时编译器 HotSpot虚拟机中内置了两个即时编译器,分别称为Client Compiler和Server Compiler,或者简称为C1编译器和C2编译器。Java8默认开启Server模式。用户可以使用“-client”或“-server”参数去指定编译模式。 C1编译器启动速度快,关注局部简单可靠的优化,比如方法…

【八大排序】-- 计数排序(动图演示)

计数排序介绍 计数排序是一个非基于比较的排序算法。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(nk)(其中k是整数的范围),快于任何比较排序算法。 当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n…

Java反序列化漏洞笔记

前言 作为Java安全方面的盲对Java反序列化各种链方面了解的并不多,但是这些链条又极为重要,有助于更好的理解各种漏洞的产出和原理,因此以下笔记开始从底慢慢学起。 为什么会产生安全问题? 服务器反序列化数据时,客…

OpenCV-Python中的图像处理-模板匹配

OpenCV-Python中的图像处理-模板匹配 模板匹配单对象的模板匹配多对象的模板匹配 模板匹配 使用模板匹配可以在一幅图像中查找目标函数: cv2.matchTemplate(), cv2.minMaxLoc()模板匹配是用来在一副大图中搜寻查找模版图像位置的方法。 OpenCV 为我们提…

行业追踪,2023-08-15

自动复盘 2023-08-15 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…