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

server/2024/10/19 5:27:11/

一、文件和目录的操作

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() 读取一行

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

在这里插入图片描述

(2) 写操作

文件对象.write()

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

在这里插入图片描述

(3) seek指针操作

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

python">fileObject.seek(offset[, whence])

参数

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

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

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

python"># 打开文件
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来实现:

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

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

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

3、文件和文件夹的操作

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

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

python">import osprint(os.name)  #查看当前操作系统名字
print(os.getcwd()) #获取当前工作目录nt
D:\code\myworkspace\pythontest\untitled

http://www.ppmy.cn/server/103632.html

相关文章

迈入退休生活,全职开发ue独立游戏上架steam

决定退休了。算了算睡后收入,也可以达到每月一万一,正好可以养家糊口。 既然退休了,那就做些想做的事情,别人养花养草,而我打算开发独立游戏上架steam。 一,盘点下目前的技术体系。 1,图形学底…

ctfshow之web29~web51

目录 web29 题解: web30 web31 web32(32~36) web33 web34 web35 web36 web37 web38 web39 web40 web41 web42 (42~51) web43 web44 web45 web50 web51 web29 前瞻知识: isset() …

大数据量实现滚动分页-vue3+element-plus实现方式

1.背景:分页是处理大数据量的一种常见方式,一般有页码分页、滚动分页的实现方式,表格页面分页非常常见,下面是一个列表或者表格的滚动分页。 2.话不多说,上代码: (1)解题思路&#x…

ES的介绍和使用

全文搜索引擎 Elastic Search 第一节 引言 当系统数据量上了10亿、100亿条的时候,我们用什么数据库好?如何解决单点故障?如何提升检索速度?如何解决统计分析问题? 传统数据库的应对解决方案 关系型数据库 通过主从备…

什么是生信分析?深入探讨生物信息学的技术、方法与广泛应用

介绍 生物信息学分析,简称生信分析,是一个结合了生物学、计算机科学、信息学和统计学的多学科领域,旨在处理、分析和解释海量的生物数据。随着现代生物技术的发展,尤其是高通量测序(Next-Generation Sequencing, NGS&…

【Solidity】合约交互

Delegate Call 在当前合约通过 delegatecall 借用其他合约的方法,更新当前合约的状态变量 contract B {uint public num;address public sender;uint public value;function setVars(uint _num) public payable {num _num;sender msg.sender;value msg.value;}…

C语言——函数专题

1.概念 在C语言中引入函数的概念,有些翻译为子程序。C语言中的函数就是一个完成某项特定任务的一小段代码,这个代码是有特殊的写法和调用方法的。一般我们可以分为两种函数:库函数和自定义函数。 2.库函数 C语言国际标准ANSIC规定了一些常…

前端面试题-Vite的打包速度为什么比Webpack快?

哈喽小伙伴们大家好!今天继续为大家分享一道面试题 大家都知道,Vite和Webpack是前端开发中用来构建项目的两个框架,Webpack是针对Vue2的,而Vite则是为vue3量身定制的,他们有哪些区别呢?为什么我们推荐使用Vite呢?Webpack又有哪些缺点呢?这篇文章我们来一探究竟。 Vite和We…