一、文件和目录的操作
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