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. 王道oj/problem11(函数调用中实现指针的传递)

    网址:http://oj.lgwenda.com/prblem/11 思路:函数中的j=&i,为i的地址 *j可以从地址访问,从而改变i的值 代码: #define _CRT_SECURE_N ...

  2. windows配置supervisor实现nginx自启

    前言 有些老项目的nginx部署在windows server上,而且服务器比较老旧,经常异常重启.鉴于个人并不熟悉windows server,因此配置supervisor自启nginx,实现win ...

  3. Java实践项目 - 购物车模块

    Smiling & Weeping ----世界上美好的东西不太多,立秋傍晚从河对岸吹来的风, 加入购物车 1.数据创建--创建t_cart CREATE TABLE t_cart( cid ...

  4. Web项目如何配置Eslint

    介绍 ESLint 是一个根据方案识别并报告 ECMAScript/JavaScript 代码问题的工具,其目的是使代码风格更加一致并避免错误.在很多地方它都与 JSLint 和 JSHint 类似, ...

  5. Springboot中使用线程池的三种方式

    前言 多线程是每个程序员的噩梦,用得好可以提升效率很爽,用得不好就是埋汰的火葬场. 这里不深入介绍,主要是讲解一些标准用法,熟读唐诗三百首,不会作诗也会吟. 这里就介绍一下springboot中的多线 ...

  6. Ds100p -「数据结构百题」21~30

    21.P4172 [WC2006]水管局长 SC 省 MY 市有着庞大的地下水管网络,嘟嘟是 MY 市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从 \(x ...

  7. Vue 搭配 Spring MVC 创建一个 web 项目

    Vue 搭配 Spring MVC 创建一个 web 项目 想要写一个登录的web应用程序.页面使用Vue,后端使用Spring MVC,最终打成war包,放在tomcat下启动. 1.创建Sprin ...

  8. Oracle查询--增加--删除--修改主键

    对Oracle表主键的操作,有四类:查询,增加,修改,删除 1.查询主键 /*查询某个表中存在的约束*/ select * from user_constraints where table_name ...

  9. TrueUpdate白加黑木马分析保姆级教程

    目录 TrueUpdate白加黑木马分析保姆级教程 0x00:前言 TrueUpdate是什么? 0x01: TrueUpdate逆向分析解压密码 查壳 脱壳 分金定穴 找到解压密码方法1: 找到解压 ...

  10. 临时表、视图与系统函数_Lab2

    MySQL数据库操作 Lab1.md body { font-family: var(--vscode-markdown-font-family, -apple-system, BlinkMacSys ...