当前位置: 首页 > news >正文

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

一、文件和目录的操作

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 osprint(os.name)  #查看当前操作系统名字
print(os.getcwd()) #获取当前工作目录nt
D:\code\myworkspace\pythontest\untitled

http://www.mrgr.cn/news/3251.html

相关文章:

  • 前端读取response.headers异常:Cannot read properties of undefined (reading ‘split‘)
  • 【Qt】常用控件QCalendarWidget的使用
  • Java | Leetcode Java题解之第350题两个数组的交集II
  • 6. 面向对象编程 (OOP)
  • 第6天:常用的Python库和框架——Flask:Web开发框架简介
  • 读论文《Temporal Graph Networks for Deep Learning on Dynamic Graphs》
  • 24/8/17算法笔记 MPC算法
  • 快速体验微软TTS服务
  • 91.SAP ABAP - 在程序中声明结构对象 - 笔记
  • 基于Java爬取微博数据(二) 正文长文本+导出数据Excel
  • Qt五大核心特性之信号与槽
  • 鸿蒙(API 12 Beta3版)【DRM系统管理(ArkTS)】数字版权保护
  • HTML 列表和容器元素——WEB开发系列10
  • Tomcat
  • 【数据结构】选择排序
  • Stable Diffusion赋能“黑神话”——助力悟空走进AI奇幻世界
  • 操作系统相关 形象比喻
  • 设计模式实战:库存管理系统的设计与实现2
  • 校园一卡通_q7e7o
  • 调用大模型API-文心一言