Python提供的文件操作相对于Java来说,确实简单方便许多。不仅操作简单,代码可读性也相对较高。然而,我们需要注意的不仅仅是文件操作的简单性,还有文件操作的各种模式。在Java中,我们并不经常使用像Python中那样的操作模式。

另外,我们还需要注意文件指针的移动。无论是Java还是Python,文件都可以看作是IO流,流到哪里就算是哪里。除非重新对文件进行操作,否则想要回到文件开头,只能通过移动指针来实现。因此,在进行文件操作时,我们需要谨慎考虑文件指针的位置。

基本语法和模式

首先,我们需要使用open()函数来打开文件,并指定文件名和打开模式。常用的打开模式有多种选项,对于我们有经验的来说,r、w、a基本都能猜到他们所代表的英文意思。

  • r:只读模式,从文件中读取数据(默认模式)。
  • w:写入模式,首先清空文件内容,然后写入数据。
  • a:追加模式,将数据写入文件末尾。
  • b:二进制模式,用于处理二进制数据,也就是图片和视频文件了。你可以将"b"理解为"binary"的缩写
  • t:文本模式(默认模式),用于处理文本文件。你可以将"t"理解为"text"的缩写
# 打开文件 也可以是file = open("filename.txt", "r")
file = open("example.txt", "rt") # 一次性读取文件内容
content = file.read()
print(content) # 关闭文件
file.close()

除了示例中使用的rt模式,还有其他常用的模式,就是r、w和b、t的字母组合了:

  • wt:以文本模式写入文件。如果文件不存在,则创建一个新文件;如果文件已存在,则清空文件内容。
  • rb:以二进制模式读取文件。
  • wb:以二进制模式写入文件。

我们上面的写法是最基础的,为了保证文件操作的正确性和资源的释放,我们需要手动关闭文件。在Java中,可以使用try-with-resource语法来自动关闭流,而在Python中,我们也可以使用with语句来实现类似的功能,自动关闭文件,如下所示:

with open("filename.txt", "r") as file:
content = file.read()
print(content)

当你在写入文件后,想要回到文件开头以便读取文件内容时,可以使用seek(0)将指针移动到文件的开头位置。以下是一个示例:

with open("file.txt", "a+") as file:
file.write("This is a new line.")
file.seek(0)
content = file.read()
print(content)

使用seek(0)将指针移动到文件的开头位置。最后,我们使用read()函数读取整个文件的内容,并将其打印出来。指令后面的+号可以表示以读写方式打开文件。

简单案例

使用with open()语句可以更简洁地管理文件的打开和关闭,下面是使用with open()语句进行文件交换、删除源文件和重命名临时文件的示例代码:

import os

# 源文件路径
source_file = "path/to/source_file.txt" # 临时文件路径
temp_file = "path/to/temp_file.txt" # 文件交换
with open(source_file, "rt") as file, open(temp_file, "wt") as temp:
content = file.read()
temp.write(content) # 删除源文件
os.remove(source_file) # 重命名临时文件为源文件
os.rename(temp_file, source_file)

这次我们第一次使用了import语句,这个语句的作用是导入包。通过导入包,我们可以直接使用写好的逻辑,而不需要自己去编写。Python之所以能够如此简洁,离不开各种强大的包的支持。实际上,文件交换部分的代码也可以利用包来实现,因为已经有其他人写好了相关的功能,就像我们需要实现列表功能时可以直接使用ArrayList一样。市面上已经有很多优秀的轮子可供使用,只需要直接拿来用,千万不要重复造轮子~~

总结

Python提供的文件操作相对于Java来说,更简单方便。不仅操作简单,代码可读性也更高。不过,我们还需要注意文件操作的各种模式和文件指针的移动。虽然文件操作只有几种方式,但我不会给出示例,避免浪费大家的时间和精力。

🔥🔥Java开发者的Python快速进修指南:文件操作的更多相关文章

  1. Python基础-week03 集合 , 文件操作 和 函数详解

    一.集合及其运算 1.集合的概念 集合是一个无序的,不重复的数据组合,它的主要作用如下 *去重,把一个列表变成集合,就自动去重了 *关系测试,测试两组数据之前的交集.并集.差集.子集.父级.对称差集, ...

  2. python 小兵(4)之文件操作 小问题

    1.光标不对就用seek 2.文件操作方面注意不要变修改变删除,会爆出文件正在运行不能操作 3.w模式下只有开始打开的时候会清空 4.文件操作的时候用as 后面的参数进行操作,不能用文件名进行操作 5 ...

  3. Python基础7:文件操作

    [ 文件操作] 1 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧 ...

  4. python函数基础 与文件操作

    函数的定义 函数是通过赋值传递的,参数通过赋值传递给函数.def语句将创建一个函数对象并将其赋值给一个变量名,def语句的一般格式如下: def function_name(arg1,arg2[,.. ...

  5. Python 第三天 文件操作(2)

    文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和  fi ...

  6. python学习笔记4(文件操作)

    文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”)      直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...

  7. python学习笔记-(七)python基础--集合、文件操作&函数

    本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...

  8. Python自动化 【第三篇】:Python基础-集合、文件操作、字符编码与转码、函数

    1.        集合 1.1      特性 集合是一个无序的,不重复的数据组合,主要作用如下: 去重,把一个列表变成集合实现自动去重. set可以看成数学意义上的无序和无重复元素的集合,因此,两 ...

  9. python学习笔记三 文件操作(基础篇)

    文件操作 打开文件 open(name[,mode[,buffering]])   open函数使用一个文件名作为强制参数,然后返回一个文件对象.[python 3.5 把file()删除掉]   w ...

  10. python 函数初识和文件操作

    文件操作  打开文件:文件句柄 = open('文件路径', '模式')  打开文件的模式 w #以写的方式打开 (不可读,不存在则创建,存在则删除内容) a #以追加的模式打开(可读, 不存在则创建 ...

随机推荐

  1. Django: You are trying to add a non-nullable field 'name' to mainnav without a default; we can't do that (the database needs something to populate existing rows).

    错误原因: 语句中缺少默认值 class Main(models.Model): img = models.CharField(max_length=255) name = models.CharFi ...

  2. 如何正确使用:has和:nth-last-child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字.例如,一个拥有三个或更多子项的grid.你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会根据子元素的数量而改变. ...

  3. 聊聊自然语言处理NLP

    概述 自然语言处理(NLP)的正式定义:是一个使用计算机科学.人工智能(AI)和形式语言学概念来分析自然语言的研究领域.不太正式的定义表明:它是一组工具,用于从自然语言源(如web页面和文本文档)获取 ...

  4. TensorRT 模型加密杂谈

    在大多数项目交付场景中,经常需要对部署模型进行加密.模型加密一方面可以防止泄密,一方面可以便于模型跟踪管理,防止混淆. 由于博主使用的部署模型多为TensorRT格式,这里以TensorRT模型为例, ...

  5. 如何让WPF中的ValidationRule实现参数绑定

    背景 应用开发过程中,常常会对用户输入内容进行验证,通常是基于类型.范围.格式或者特定的要求进行验证,以确保输入符合预期.例如邮箱输入框校验输入内容是否符合邮箱格式.在WPF中,数据模型允许将Vali ...

  6. MySQL 慢查询探究分析

    背景: 性能测试过程中,数据库往往是造成性能瓶颈之一,而数据库瓶颈中sql 语句又是值得探究分析的一环,其中慢查询是重点优化对象,在MySQL中,慢查询是指查询执行时间较长或者消耗 较多资源的查询语句 ...

  7. 《Python魔法大冒险》008 石像怪的挑战:运算符之旅

    小鱼和魔法师继续深入魔法森林.不久,他们来到了一个巨大的魔法石圈旁边.石圈中心有一个闪闪发光的魔法水晶,周围则是一些神秘的符号.但令人意外的是,水晶的旁边还有一个巨大的石像怪,它的眼睛散发着红色的光芒 ...

  8. CAP项目集成带身份和证书验证的MongoDB

    大家好,我是Edison. 最近,在使用CAP事件总线时,碰到了这样一个需求:微服务采用的是MongoDB,而且还是带身份验证 和 SSL根证书验证的.由于目前网上能找到的资料,都是不带身份验证的Mo ...

  9. Http协议之libcurl实现

    一.libcurl简介 libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl同样支持 ...

  10. Q-REG论文阅读

    Q-REG Jin, S., Barath, D., Pollefeys, M., & Armeni, I. (2023). Q-REG: End-to-End Trainable Point ...