【python与java的区别-04(文件流)】

news2024/11/28 13:31:33

一、文件和目录的操作

1、IO流(Stream)

通过“流”的形式允许计算机程序使用相同的方式来访问不同的流入/流出源。Stream是从起源(source)到接收(sink)的有序数据。我们把输入/输出源对比成“水桶”,那么流就是“管道”。

文件流:就是源或者目标都是文件的流。

(0) 操作方法

全局函数:open
open函数是Python提供用来操作IO流的函数

file
表示一个文件的具体路径(也可以是文件名称)

mode
表示一个字符串(mode默认是tr)

r:read表示输入流
w:write表示输出流
t:表示字符流
b:表示字节流
a:表示追加输出

encoding
表示编码,主要用来表示字符的编写格式

(1) 读操作

文件对象.read() : 默认读取整个文件。或者可以读取指定大小的数据
文件对象.readlines()
文件对象.readline() 读取一行

f = open('file','r')
print(f.read())
f.close()

在这里插入图片描述

(2) 写操作

文件对象.write()

f =open('test.txt', 'w')
f.write('Hello World')
f.close()

在这里插入图片描述

(3) seek指针操作

seek(偏移量,起始位置):
tell() 函数返回当前指针位置

fileObject.seek(offset[, whence])

参数

offset – 开始的偏移量,也就是代表需要移动偏移的字节数

whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

返回值
如果操作成功,则返回新的文件位置,如果操作失败,则函数返回 -1。

# 打开文件
fo = open('file', 'r')
print("文件名为: ", fo.name)

line = fo.readline()
print("读取的数据为: %s" % (line))

# 重新设置文件读取指针到开头
fo.seek(0, 0)
line = fo.readline()
print("读取的数据为: %s" % (line))

在这里插入图片描述

(4)关闭

close()

(5)模式

有r 、rb、w ,也就是上面提到的mode

注意: 什么时候用r什么时候用rb
r代表的是字符
rb代表的是字节 b-byte
当是图片文件的时候就需要用到rb

2、with语句

对于系统资源如文件、数据库链接、socket而言,应用程序打开这些资源并执行完业务逻辑之后,必须做的一件事就是关闭(释放)该资源。

比如Python程序打开一个文件,往文件中写内容,写完之后,就要关闭该文件,如果不关闭会出现什么情况呢?极短情况下会出现 Too many open files
的错误,因为系统允许你打开的最大文件数量是有限的。

由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try … finally来实现:

try:
    f = open('/path/', 'r')
    print(f.read())
finally:
    if f:
        f.close()

每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:

with open('/path/to/file', 'r') as f:
    print(f.read())

3、文件和文件夹的操作

在python中文件和文件夹的操作要借助os模块里面的相关功能,os 模块是python标准库的一个用于访问操作系统功能的模块

首先需要导入os模块: import os

import os

print(os.name)  #查看当前操作系统名字
print(os.getcwd()) #获取当前工作目录

nt
D:\code\myworkspace\pythontest\untitled

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

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

相关文章

企业给排水乙级资质续期:人才储备与补充计划

企业给排水乙级资质续期过程中,人才储备与补充计划是至关重要的环节。以下是一个详细的人才储备与补充计划,旨在帮助企业顺利应对资质续期挑战: 一、人才储备计划 1. 提前规划与预测 政策分析:密切关注住建部门或相关权威机构发…

VirtualBox和VMware的虚拟机ip配置为同一网段不使用wlan的网卡(vulnhub打靶前期准备)

打靶前期准备工作,virtualbox和VMware之间的网络互通(即同一个网段下非wlan网卡的设置) 首先在打靶的时候因为vulnhub的靶机都是使用的virtualbox的虚拟机,但是我的kali已经用了很久了一直使用的是VMware,突然转换使用…

面试必刷——二叉树习题/面试题详解

(1)检查两棵树是否相同 题目链接: . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems…

品质更进阶 长安马自达MAZDA EZ-6通关中国“热极”

继在中国规格最高的重庆垫江测试场完成驾控试炼后,8月20日-22日,长安马自达MAZDA EZ-6“众测先享官—品质更进阶”在中国“热极”吐鲁番再次拉开帷幕。针对电动车用户最关心的酷暑天气用车痛点场景,由长安马自达工程师团队携手用户代表、权威…

云微客短视频矩阵获客有多容易?低成本获客备受好评

数字化时代,短视频矩阵已经成为企业获客的重要渠道之一,云微客短视频矩阵系统为企业解决在短视频营销中的账号搭建、内容生产、账号运营、低成本引流等难题。 短视频矩阵是一种基于抖音、快手、小红书、视频号等短视频平台,通过批量剪辑、批量…

Linux shell编程学习笔记72:tr命令——集合转换工具

0 前言 在大数据时代,我们要面对大量数据,有时需要对数据进行整理和转换。 在Linux中,我们可以使用 tr命令来整理和转换数据,也可以进行简单的加解密。 1 tr命令 的帮助信息,功能,格式,选项和…

图片展示时等比例缩放

通过object-fit进行图片等比例缩放 object-fit 属性有以下几种值: contain:图片等比例缩放以完全填充容器,同时保持图像的宽高比。 cover:图片等比例缩放以完全填充容器,但可能会裁剪图片。 fill:图片拉伸以…

AR 眼镜之-系统应用音效-实现方案

目录 📂 前言 AR 眼镜系统版本 系统应用音效 1. 🔱 技术方案 1.1 技术方案概述 1.2 实现方案 1)初始化 2)播放音效 3)释放资源 2. 💠 播放音效 2.1 静音不播放 2.2 获取音效默认音量 3. ⚛️ …

一文通透mamba2:力证Transformer are SSM——从SSM、半可分矩阵、SSD到mamba2

前言 实话说,过去一两月一直忙着我司两大类项目的推进 一类是正在逐一上线基于大模型的论文翻译、论文审稿、论文对话、论文修订/润色、论文idea提炼等等一类是正在抓紧做面向一个个工厂的具身智能机器人的解决方案,且很快会分别在我司在各地的办公室(…

day06_算法训练

一. Stream流 1.1 Stream流概述 概念: jdk1.8以后提供的新的API, 主要用于批量操作数据(集合的另外一种操作方式),代码非常简洁 流式处理思想: 2.2 Stream对象获取 1.单列集合的Stream流对象获取 2.双列集合的Stream流对象获取 3.数组的Stream流对象获取 4.散装数据的St…

数据结构day03(栈 Stack 顺序栈、链式栈 )内含具体详细代码实现

目录 【1】栈 Stack 1》栈的定义 2》顺序栈 2》链式栈 4》顺序栈的链式栈的区别 【1】栈 Stack 1》栈的定义 栈:是只允许在一端进行插入或删除的线性表,首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。 栈顶&…

《Python编程:从入门到实践》笔记(一)

一、字符串 1.修改字符串大小写 title()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写,其他的改为小写。 upper()将字母都改为大写,lower()将字母都改为小写。 2.合并(拼接)字符串 Python使用加号()来合并字符串。这种合…

Java—认识异常 ( ̄▽ ̄)~*

目录: 一、异常的概念和体系结构: 1、异常的概念: 2、异常的体系: 3、异常的分类: 二、异常的处理: 1、防御式编程: 1)、 事前防御型(LBYL) : 2)、事后…

C语言典型例题47

《C程序设计教程(第四版)——谭浩强》 习题3.7 输入4个整数,要求按照从小到大的顺序输出 4个数之间进行比较,冒泡排序最最最详细过程,如果想更改为任意数之间相互比较,只需要修改两个地方(数组大…

cocoscreator怪物实时寻路AI

这章主要介绍怪物AI 1:环境 cococreator2.4.* 2:规则 当前规则很简单,就是跳上,跳下 一个土块 3:上代码 // Learn cc.Class: // - https://docs.cocos.com/creator/manual/en/scripting/class.html // Learn Attri…

C++智能指针配合STL模板类

代码 #include <unordered_map> #include <set> #include <memory> class ResID { public:using SP std::shared_ptr<ResID>;ResID() default;ResID(const std::string& id, const std::string& type): m_id(id), m_type(type){}public:~Re…

SAM 2——视频和图像实时实例分割的全新开源模型

引言 源码地址&#xff1a;https://github.com/facebookresearch/segment-anything-2 过去几年&#xff0c;人工智能领域在文本处理的基础人工智能方面取得了显著进步&#xff0c;这些进步改变了从客户服务到法律分析等各个行业。然而&#xff0c;在图像处理方面&#xff0c;我…

Python高手如何做到一键更新代码?

声明&#xff1a;此篇为 ai123.cn 原创文章&#xff0c;转载请标明出处链接&#xff1a;https://ai123.cn/2186.html ​Hey&#xff0c;Python搞手们&#xff0c;&#x1f44b;&#xff0c;你们是否也头疼代码维护的重重难关&#xff1f;别担心&#xff0c;今天就给你们带来一手…

【功能】Lua层的全局事件管理系统

1.EventManager 全局的管理类 2.EventType 事件类型 3..Lua层Common工具目录去require对应文件目录的脚本文件 --事件类型 local EventType {TestMsg 1&#xff0c; }return EventType local EventManager class(); EventManager.msgMap {}local function HaveSameFunc(…

Linux 搜索历史命令Ctrl+R

最近使用CtrlR来搜索历史命令&#xff0c;对比速度比history 快一下&#xff0c;且看起来高级。记录如下&#xff1a;命令1&#xff1a;history 功能&#xff1a;显示当前Linux终端输入过的历史命令。案例&#xff1a;使用history 出来的结果很多&#xff0c;通常和grep 过滤&a…