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,一经查实,立即删除!

相关文章

Docker Mysql 5.7搭建主从复制 CentOS7

文章目录 一、 环境介绍:二、 搭建步骤:1、容器启动2、master配置3、slave配置4、主从配置1、master配置2、slave配置 一、 环境介绍: 系统: CentOS7 mysql:5.7 docker:25.0.0.0 二、 搭建步骤&#xff1…

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"…

程序安装 - 笔记

1 程序IOServer,依赖自己开发libs7.so.如何安装程序 要安装依赖于自己开发的 libs7.so 的程序 IOServer,你需要执行以下步骤: 编译 IOServer 程序:确保 IOServer 程序的源代码处于可用状态,并且已经编译成可执行文件。这可能需要执行诸如 make 或者其他编译命令,具体取决…

The Sandbox 推出全新后室模板!

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

ChatGPT之道:巧用写作技巧

ChatGPT无限次数:点击直达 ChatGPT之道&#xff1a;巧用写作技巧 在当今快节奏的社会中&#xff0c;写作是一项非常重要的技能&#xff0c;不仅可以帮助我们有效表达思想&#xff0c;还可以提升个人能力和吸引力。而借助人工智能技术&#xff0c;如OpenAI推出的ChatGPT&#x…

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

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

本地存储、自定义事件、全局事件总线

Vue 1.1 浏览器的本地存储 存储内容大小一般支持5MB左右&#xff08;不同浏览器可能还不一样&#xff09; 浏览器通过 Window.sessionStorage 和 Window.localStorage 属性来实现本地存储机制 相关API: &#xff08;1&#xff09;xxxxStorage.setItem(key, value); 该方法接受一…

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业泡沫和虚假繁荣的质疑。大量…

go实现执行协成执行多个任务

大家对go语言陌生吗&#xff1f;大家有没有了解过关于go的协成呢&#xff0c;这里没有废话&#xff0c;直接上 使用go get 可以设置这个变量go env -w GOPROXYhttps://goproxy.io,direct 会使go get 更加快 package test_2import ("fmt""testing" )func w…

汉译英早操练-(十三)

hello大家好&#xff0c;这里是总想让你开心的hyssop。今天我们学点儿英语&#xff0c;填充下内心的空虚哈哈~ 不知道你拿起来一句话翻译的思路是什么&#xff0c;是应该用主动语态直抒胸臆&#xff0c;还是用被动语态强调部分&#xff1f;今天我们就来看看翻译大师李长栓老师对…

Redis数据库持久化方案

Redis数据库的持久化方案 Redis提供了两种主要的持久化方案&#xff0c;分别是RDB&#xff08;Redis DataBase&#xff09;和AOF&#xff08;Append Only File&#xff09;。 RDB&#xff08;Redis DataBase&#xff09; RDB是Redis默认的持久化方式&#xff0c;它按照一定的…

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

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

(六)PostgreSQL的组织结构(1)-角色、数据库、schema

PostgreSQL的组织结构(1)-角色、数据库、schema 在 PostgreSQL 中&#xff0c;用户、数据库和 schema 是数据库管理和组织结构中非常基础且重要的概念。它们在定义数据库的访问权限、组织数据以及在多用户环境中管理数据方面起着核心作用。以下是每个概念的简要说明&#xff1…

全栈外包接单/远程工作(TS, React, Vue, Java, 移动端)

个人介绍 我毕业于中国某一本院校计算机专业&#xff0c;曾在北京大型软件公司从事Java开发多年&#xff0c;主要服务于全国各大头部985/211院校。后来为扩宽职业路径&#xff0c;转向了Ts全栈&#xff0c;现专注于远程外包接单工作&#xff0c;致力于打造一个能为客户带来优质…

windows命令行安装工具/包/软件后,命令行命令找不到(npm示例)

问题描述 在命令行安装工具&#xff0c;比如npm install, 或者windows自带的包管理工具&#xff0c;如Chocolatey&#xff0c;Scoop&#xff0c;WinGet等&#xff0c;安装软件后&#xff0c;然后直接在命令行运行上面安装的指令会提示命令找不到。这让经常使用linux&#xff0…

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

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