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

发布于:2024-08-22 ⋅ 阅读:(138) ⋅ 点赞:(0)

一、文件和目录的操作

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

网站公告

今日签到

点亮在社区的每一天
去签到