首页 > 编程语言 >Java开发者的Python快速进修指南:文件操作

Java开发者的Python快速进修指南:文件操作

时间:2023-11-22 09:23:46浏览次数:49  
标签:文件 Java Python 模式 content 开发者 file open

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,模式,content,开发者,file,open
From: https://www.cnblogs.com/guoxiaoyu/p/17835006.html

相关文章

  • 聪明办法学Python-2023-task01
    task00因为完全按照视频教学傻瓜式操作即可完全学会,这里不做赘述视频链接:【安装】手把手带你配置AI环境_哔哩哔哩_bilibilitask01参考视频链接[Chap1启航]聪明办法学Python第二版_哔哩哔哩_bilibili注释Comment分类:单行注释,使用#开头多行注释,使用'''或"""......
  • python_datetime日期时间
    #!/usr/bin/python3#-*-coding:UTF-8-*-importdatetimeimporttime#时间戳ticks=time.time()print(ticks)#结构体时间{tm_year...}localtime=time.localtime(ticks)print(localtime)#格式化时间strftime=time.asctime(localtime)print(strftime)#获取当前日......
  • 聪明班法学python task1
    Python课程简介Python是一种非常流行的编程语言,是人工智能的主流语言。特点:代码少,比c简单安装Installation安装清单(默认配置即可):Miniconda1.需要激活环境2.更换镜像源【可加快国内资源下载速度】​ Pip换源​ Conda换源VisualStudioCodeGit启航GETTINGSTARTED第......
  • Java学习—二分法查找(二)
    BM18 二维数组中的查找描述在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给......
  • python_字段dict
    字典,类似json#!/usr/bin/python3#-*-coding:UTF-8-*-importjsondata={'name':'abc','age':{'zhousui':7,'xusui':8},'class':'first'}print(data)strJson=json.dumps(data)#json转字符串pr......
  • python学习
    python学习第一周注释单行注释:用#开头多行注释:用'''或"""包裹起来快捷键:ctrl+/缩进Tap:向前缩进shift+Tap:向后缩进printprint默认每次换行print("Date")print("whale")输出Datewhaleprint("date",end="")print("whale&q......
  • OpenAI 超 700 名员工联名逼宫董事会;ChatGPT 新功能“阅后即焚”丨 RTE 开发者日报 Vo
       开发者朋友们大家好:这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑......
  • 解决问题:Unable to start embedded container; nested exception is java.lang.NoSuch
    因为有重复的jar原因:springboot有自己的tomcat运行环境我们又在构件路径中添加了tomcat解决方法:把项目构件路径中的tomcat给移除 ......
  • 聪明办法学python【安装】+【启航】
    聪明办法学python—1任务【0】安装conda配置顺便了解了anniconda和miniconda的联系:mini体谅更小,但是没有图形化界面配置下载的一般流程:找一个镜像网站(因为服务器在国外,直接下载很慢)​校园网联合镜像站https://help.mirrors.cernet.edu.cn/​阿里巴巴开源......
  • 前端学习-JavaScript学习-js基础05
    学习教程:黑马程序员视频链接对象了解<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Docum......