Python 学习笔记(十)—— 文件

目录

一、文件基本概念

二、文件打开和关闭

2.1 打开文件 open() 方法

2.2 File 对象的属性

2.3 关闭文件 close() 方法

三、文件操作

3.1 写入操作方法

3.1.1 write() 方法

3.3.2 writelines() 方法

3.2 读取操作方法

3.2.1 read() 方法

3.2.2 readline() 方法

3.2.3 readlines() 方法

3.3 定位与移动操作方法

3.3.1 tell() 方法

3.3.2 seek() 方法

3.4 复制、重命名与删除

3.4.1 文件复制

3.4.2 文件重命名

3.4.3 文件删除

3.4.4 删除目录

四、文件夹操作

4.1 创建文件夹

4.2 删除文件夹

4.3 重命名文件夹

4.4 检查文件夹是否存在

4.5 切换当前工作目录

4.6 获取当前工作目录


一、文件基本概念

文件是计算机系统中存储信息的基本单位。它可以包含文本、图片、音频、视频等各种形式的数据。文件通常被存储在存储设备(如硬盘、闪存、光盘等)上,可以被计算机系统读取、写入和处理。

文件通常有一个唯一的文件名,用于标识不同的文件。文件名一般包含文件的扩展名,用于表示文件的类型或格式。例如:.txt表示文本文件,.jpg表示图片文件,.mp3表示音频文件等。

文件可以通过文件路径来定位和访问。文件路径通常包含文件的位置信息,可以是相对路径(相对于当前工作目录)或绝对路径(从根目录开始的完整路径)。通过文件路径,用户可以找到指定文件并操作它。

文件的内容可以被读取、写入和修改。读取文件可以获取文件中存储的数据,并将其加载到计算机内存中。写入文件可以将数据存储到文件中,并更新文件的内容。修改文件可以改变文件的内容、大小或属性。

文件可以分为不同的类型,常见的类型包括文本文件、二进制文件、可执行文件、压缩文件等。不同类型的文件有不同的结构和格式,需要使用不同的方法来处理和操作。

二、文件打开和关闭

2.1 打开文件 open() 方法

open()方法是Python内置的文件打开函数,用于打开一个文件并返回文件对象。

函数原型:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:

  • file:要打开的文件名或路径。
  • mode:打开文件的模式。
  • buffering:设置缓冲策略,默认值为-1,表示使用系统默认的缓冲策略。
  • encoding:指定打开文件时的编码方式,常用的编码方式有'utf-8'、'gbk'等。
  • errors:设置编码错误处理方式,默认值为None,表示忽略错误。
  • newline:设置换行符的处理方式,默认值为None,表示使用系统默认的换行符。
  • closefd:指定关闭文件描述符的方式,默认值为True,表示关闭文件描述符。
  • opener:设置打开文件时使用的自定义开启器。

常见的文件打开模式:

模式描述
'r'以只读方式打开文件。文件指针位于文件的开头,如果文件不存在则抛出异常。
'w'以写入方式打开文件。如果文件存在则将其内容清空,如果文件不存在则创建一个新文件。
'a'以追加方式打开文件。文件指针位于文件的末尾,如果文件不存在则创建一个新文件。
'x'以独占方式创建一个新文件并打开文件。如果文件已经存在则抛出异常。
'b'以二进制模式打开文件。可以与其他模式一起使用,如 'rb'、'wb'、'ab'。
't'以文本模式打开文件。默认模式,可以与其他模式一起使用,如 'rt'、'wt'、'at'。
'+'以读写方式打开文件。可以与其他模式一起使用,如 'r+'、'w+'、'a+'。

2.2 File 对象的属性

在 Python 中,通过使用 open() 函数打开文件后,会返回一个文件对象。可以使用该对象的属性来获取有关文件的相关信息。以下是一些常见的文件对象属性:

  • name:返回文件的名称或路径。
  • mode:返回文件的打开模式。
  • closed:表示文件是否已关闭,如果文件已关闭则为 True,否则为 False
  • encoding:返回文件的编码方式。
  • readable():返回文件是否可读。
  • writable():返回文件是否可写。
  • seekable():返回文件是否支持随机访问。

例如:

f = open('file.txt', 'r')
print(f.name)        # 输出文件名 'file.txt'
print(f.mode)        # 输出文件的打开模式 'r'
print(f.closed)      # 输出文件是否已关闭 False
print(f.encoding)    # 输出文件的编码方式
print(f.readable())  # 输出文件是否可读 True
print(f.writable())  # 输出文件是否可写 False
print(f.seekable())  # 输出文件是否支持随机访问 Truef.close()            # 关闭文件
print(f.closed)      # 输出文件是否已关闭 True

注意:

在使用这些属性之前,确保文件对象是有效的并且已打开。如果文件已关闭,则无法访问文件对象的属性。

2.3 关闭文件 close() 方法

在Python中,我们可以使用文件对象的 close() 方法来关闭已打开的文件。调用 close() 方法后,文件将不再可用,并且资源将被释放。

以下是使用 close() 方法关闭文件的示例:

f = open("file.txt", "r")
# 使用文件对象进行操作
f.close()

注意:

关闭文件是一个很好的习惯,可以确保文件资源被正确释放。在没有显示调用 close() 方法时,Python也会在程序结束时自动关闭文件。

此外,还有另一种更常用的方式来打开文件,并使用 with 语句来自动关闭文件。下面是使用 with 语句来关闭文件的示例:

with open("file.txt", "r") as f:# 使用文件对象进行操作# 在结束 with 代码块后,文件会自动关闭

在上面的示例中,我们使用 with 语句打开文件,并将返回的文件对象赋给变量 f。然后我们使用文件对象进行文件操作。当 with 代码块结束时,文件对象会自动关闭,无需显式调用 close() 方法。

三、文件操作

3.1 写入操作方法

3.1.1 write() 方法

在Python中,我们可以使用文件对象的 write() 方法向文件中写入内容。write() 方法接受一个字符串作为参数,并将该字符串写入文件。

以下是使用 write() 方法写入文件的示例:

f = open("file.txt", "w")
f.write("Hello, World!")
f.close()

在上面的示例中,我们使用 open() 函数以写入模式打开文件,并将返回的文件对象赋给变量 f。然后,我们使用 f.write("He llo, World!") 将字符串 "Hello, World!" 写入文件。最后,我们调用 f.close() 方法来关闭文件。

3.3.2 writelines() 方法

除了使用 write() 方法写入字符串,我们还可以使用 writelines() 方法将多个字符串写入文件writelines() 方法接受一个字符串列表作为参数,将列表中的所有字符串写入文件。

以下是使用 writelines() 方法写入文件的示例:

f = open("file.txt", "w")
lines = ["Hello, ", "World!"]
f.writelines(lines)
f.close()

在上面的示例中,我们使用 writelines() 方法将字符串列表 lines 写入文件。

除了普通文本,我们还可以写入其他数据类型,如数字、列表或者字典。但是,在写入非字符串类型时,需要先将其转换为字符串格式。

以下是将数字写入文件的示例:

f = open("file.txt", "w")
f.write(str(10))
f.close()

在上面的示例中,我们在写入之前使用 str() 函数将数字 10 转换为字符串。然后,我们通过 write() 方法将字符串 "10" 写入文件。

3.2 读取操作方法

文件读取操作方法有以下几种常见的方式:

3.2.1 read() 方法

read()方法:一次性读取整个文件的内容。

with open('file.txt', 'r') as file:content = file.read()

3.2.2 readline() 方法

readline()方法:逐行读取文件内容。每次调用readline()方法读取一行,并将光标移动到下一行。

with open('file.txt', 'r') as file:line = file.readline()while line:print(line)line = file.readline()

3.2.3 readlines() 方法

readlines()方法:读取多行内容并以列表形式返回,每一行作为列表的一个元素。

with open('file.txt', 'r') as file:lines = file.readlines()for line in lines:print(line)

3.3 定位与移动操作方法

在文件读取过程中,有时需要定位到文件的特定位置或移动文件指针到不同的位置。Python提供了一些方法来进行文件定位移动操作。

以下是文件定位与移动操作方法:

3.3.1 tell() 方法

tell()方法:tell()方法返回文件指针的当前位置,即文件中当前读取/写入的位置。

with open('file.txt', 'r') as file:position = file.tell()print(position)

3.3.2 seek() 方法

seek()方法:seek()方法用于将文件指针移动到指定位置。它接受两个参数:偏移量和起始位置。

函数原型:

seek(offset, whence)

参数说明:

  • offset:偏移量,表示需要移动的字节数。可以是正数、负数或零。正数表示向后移动,负数表示向前移动,零表示不移动。
  • whence:起始位置,表示确定偏移量的参考位置。可以是0、1或2。
    • 0:从文件开头开始计算偏移量。
    • 1:从当前位置开始计算偏移量。
    • 2:从文件末尾开始计算偏移量。

  • seek()方法在文件开头位置移动文件指针:
with open('file.txt', 'r') as file:file.seek(10)  # 将文件指针移动到第10个字节处content = file.read()print(content)

  • seek()方法在当前位置移动文件指针:
with open('file.txt', 'r') as file:file.seek(5, 1)  # 从当前位置向后移动5个字节content = file.read()print(content)

注意:

在使用seek()方法之前,要确保文件以读取模式打开。此外,使用tell()和seek()方法时,要确保文件指针不超出文件的大小范围,否则可能会引发异常。

3.4 复制、重命名与删除

在python中,可以使用shutil模块os模块来进行文件复制、重命名和删除操作。

3.4.1 文件复制

使用shutil模块中的copy()函数进行文件复制操作。示例如下:

import shutil# 复制单个文件
shutil.copy('source_file.txt', 'destination_file.txt')# 复制整个目录
shutil.copytree('source_directory', 'destination_directory')

3.4.2 文件重命名

使用os模块中的rename()函数进行文件重命名操作。示例如下:

import osos.rename('old_file_name.txt', 'new_file_name.txt')

3.4.3 文件删除

使用os模块中的remove()函数进行文件删除操作。示例如下:

import osos.remove('file_to_be_deleted.txt')

3.4.4 删除目录

需要使用shutil模块中的rmtree()函数。示例如下:

import shutilshutil.rmtree('directory_to_be_deleted')

四、文件夹操作

在Python中,使用os模块可以进行文件夹的操作。下面是一些常见的文件夹操作方法:

4.1 创建文件夹

os.mkdir(path),其中path为要创建的文件夹路径。

import os
os.mkdir("folder_name")

4.2 删除文件夹

os.rmdir(path),其中path为要删除的文件夹路径。

import os
os.rmdir("folder_name")

4.3 重命名文件夹

os.rename(src, dst),其中src为原文件夹路径,dst为目标文件夹路径。

import os
os.rename("old_folder_name", "new_folder_name")

4.4 检查文件夹是否存在

os.path.exists(path),其中path为文件夹路径。返回值为布尔型,存在返回True,不存在返回False

import os
if os.path.exists("folder_name"):print("文件夹存在")
else:print("文件夹不存在")

4.5 切换当前工作目录

os.chdir(path),其中path为目标文件夹路径。

import os
os.chdir("folder_name")

4.6 获取当前工作目录

os.getcwd(),返回当前工作目录的路径。

import os
current_dir = os.getcwd()
print(current_dir)

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

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

相关文章

flex上下固定中间占固定高度(中间左右菜单)且内容自动滚动

效果图 布局&#xff1a; <view class"pop_tSet"><view class"pop_Con"><view class"box_bb"><view class"bb_title">{{titleObj[popType]}}</view></view><view class"box_bb_bot"…

The Sandbox 推出全新后室模板!

我们非常高兴地向你介绍游戏制作器的另一个新成员&#xff1a; 后室模板&#xff01; 步入神秘而不自然的空旷空间&#xff0c;感觉有些......不对劲。准备好探索、创造和拥抱引人入胜的后室世界吧。 什么是后室&#xff08;Backroom&#xff09;游戏&#xff1f; 早在 2019 年…

获取公募基金持仓【数据分析系列博文】

摘要 从指定网址获取公募基金持仓数据&#xff0c;快速解析并存储数据。 &#xff08;该博文针对自由学习者获取数据&#xff1b;而在投顾、基金、证券等公司&#xff0c;通常有Wind、聚源、通联等厂商采购的数据&#xff09; 1. 导入必要的库&#xff1a; pandas 用于数据处理…

Java中类装载的执行过程

类装载的执行过程 类从加载到虚拟机中开始&#xff0c;直到卸载为止&#xff0c;它的整个生命周期包括了&#xff1a;加载、验证、准备、解析、初始化、使用和卸载这7个阶段。其中&#xff0c;验证、准备和解析这三个部分统称为连接&#xff08;linking&#xff09;。 1.加载 …

第一天学C++(C++入门)

一、HelloWorld &#xff08;第一个C入门程序&#xff09; 1.1代码 #include<iostream> using namespace std; // 1.单行注释// 2. 多行注释 /* main 是一个程序的入口 每个程序都必须有这么一个函数 有且仅有一个 */ int main() {// 第九行代码的含义就是在屏幕中输出…

果园系统养殖游戏喂养偷菜种植浇水养成小程序

装扮 通过购买装扮场景切换不同的农场风格 土地升级 通过特定的材料对土地和房屋进行升级 日志 记录道具的使用数量及金币农作物的收入情况 幸运转盘 可用金币进行抽奖 宝箱开启 获得宝箱后可以通过金币开启 每日签到 每日签到获得奖励 系统公告 可以第一时间知道游戏的更新和…

【安全】查杀linux挖矿病毒 kswapd0

中毒现象 高cpu占用&#xff0c;使用top命令查看cpu使用率长时间50%以上&#xff0c;cpu占用异常的进程八成就是挖矿病毒进程 此病毒隐藏了自己&#xff0c;top命令无法查看到挖矿病毒进程&#xff0c;可通过sysdig命令找到隐藏进程 安装sysdig curl -s https://s3.amazonaw…

2024年软件开发行业的薪资水平在下滑的原因?

下降的原因主要包括&#xff1a; 科技行业竞争加剧&#xff1a;随着科技行业竞争的加剧&#xff0c;企业为了压缩成本&#xff0c;开始降低程序员的薪资水平。 人才供应过剩&#xff1a;在计算机成为热门学科的同时&#xff0c;社会上出现了对IT业泡沫和虚假繁荣的质疑。大量…

vue-textarea光标位置插入指定元素

vue-textarea光标位置插入指定元素 需求 点击插入关键字的时候把内容插入到光标所在的位置 效果图 实现 html <div class"temlate-container"><div class"template-content"><el-inputref"modelContent"v-model"mould.m…

嵌入式学习56-ARM5(linux驱动启动程序)

知识零碎&#xff1a; bootm&#xff1a; 启动内核同时给内核传参 …

怎么给一个字典进行按值或key来排序?

字典是具有指定数字或键的特定数据集或组。在 Python 以外的编程语言中&#xff0c;它们也被称为哈希映射或关联数组。 一般来说&#xff0c;它是键值对的形式&#xff0c;就像现实世界的字典一样。 要创建字典&#xff0c;请从左括号开始&#xff0c;添加键并键入一个冒号。…

Leetcode86_分隔链表

1.leetcode原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 2.题目描述 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的…

回文链表leecode

回文链表 偶数情况奇数情况 回文链表leecode 偶数情况 public boolean isPalindrome(ListNode head) {if (head null) {return true;}ListNode fast head;ListNode slow head;while (fast ! null && fast.next ! null) {fast fast.next.next;slow slow.next;}//反…

【spring】@Resource注解学习

Resource介绍 在Spring框架中&#xff0c;Resource 注解是一个JSR-250标准注解&#xff0c;用于自动装配&#xff08;autowiring&#xff09;Spring容器中的bean。Resource 注解可以用于字段、方法和方法参数上&#xff0c;以声明依赖注入。 Resource源码 Target({TYPE, FIE…

Python相关性分析

分析连续变量之间线性相关程度的强弱&#xff0c;并用适当的统计指标表示出来的过程称为相关分析。 可以直接绘制散点图&#xff0c;或者绘制散点图矩阵&#xff0c;或者计算相关系数来进行相关分析。 相关系数的计算如下所示&#xff1a; 示例数据&#xff1a; 计算百合酱蒸…

HarmonyOS Next 视频弹幕功能

视频弹幕功能 介绍 本示例介绍如何使用ohos.danmakuflamemaster和ohos.gsyvideoplayer开发支持视频弹幕的播放器。可以自定义弹幕样式、占据屏幕宽度&#xff0c;发送弹幕&#xff0c;开关弹幕视图。 效果图预览 使用说明 点击播放按钮&#xff0c;进行视频播放&#xff0c…

【C语言】qsort()函数排序及其模拟实现,万物皆可排!

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. 函数介绍 2. qsort举例排列整型变量 3. qsort举例排列结构型变量 3.1 按名字排序 3.1.1 srtcmp函数 3.2 按年龄排序 4. qsort函数模拟实现(采用冒泡的…

[Python]可视化地展示出表格中某一列同一数据的出现次数

前言 Matplotlib画图工具的官网地址是 http://matplotlib.org/ Python环境下实现Matlab制图功能的第三方库&#xff0c;需要numpy库的支持&#xff0c;支持用户方便设计出二维、三维数据的图形显示&#xff0c;制作的图形达到出版级的标准。 pandas 是 Python 编程语言中一个…

PHP 使用 PHPMailer 发送电子邮件

1. PHPMailer 介绍 phpMailer 是一个非常强大的 php 发送邮件扩展包&#xff0c;可以设定发送邮件地址、回复地址、邮件主题、html邮件内容和上传附件等&#xff0c;使用起来非常方便。它目前有着有近 4 千万的下载量&#xff0c;是 PHP 开发者实现邮件发送功能的首选扩展包 它…

12.基础乐理-半音、全音

音是有高有底的&#xff0c;音的震动频率越高、音的赫兹越高&#xff0c;我们就说这个音越高&#xff0c;钢琴从左到右&#xff0c;音是逐渐变高的&#xff0c;因变高&#xff0c;它的频率&#xff0c;Hz数是在增加的&#xff0c;如下图&#xff1a; 但是赫兹它动不动就是几百几…