操作文件的步骤
打开–> 操作 -> 关闭
打开文件
f=open('/etc/passwd')
print(f)
操作文件
wenjian=f.read()
print(wenjian)
关闭文件
f.close()
文件读取模式的选择
r: 可读不可写,所读文件必须存在,否则报错
r+:可读可写,所读文件必须存在,否则报错
w:可写不可读,若文件存在,则清空文件内容;若文件不存在,则创建文件,不会报错
w+:可读可写,若文件存在,则清空文件内容;若文件不存在,则创建文件,不会报错
a:可写不可读,若文件存在,不会清空文件内容;若文件不存在,则创建文件,不会报错
a+:可读可写,若文件存在,不会清空文件内容;若文件不存在,则创建文件,不会报错
文件读取的命令语句
f=open('文件位置',mode='模式')
读取文件时应该注意,当文件较小时,可以用文件read方法直接读取,但是当文件大小大于内存大小时,就不能直接读取了,此时应该用readline()方法或者readlines()方法,注意readlines()方法返回的是一个列表,列表元素为文件行内容,可用列表生成式读取
print([line.strip() for line in f.readlines()])
print([list(map(lambda x:x.strip(),f.readlines()))])
文件指针
指针:是指当前光标所在位置
当执行read或者write后,文件指针调转到文件最末,此时再进行读取或者写入时,都将从文件末尾执行命令,f.tell()可以显示当前指针所在位置
文件指针操作为seek()方法,seek中只能写0,1,2,这三个数之中的其中一个或者两个
0:是指文件指针位于文件开头
1:是指文件指针位于当前位置
2:是指文件指针位于文件末尾
例:f.seek(0,2)将指针从文件开头移动到文件末尾,f.seek(1,2)将指针从当前移动到文件末尾
with 语句
with open ('文件名') as f:
...
执行完with语句后,自动关闭文件对象
yield:将文件封装成一个生成器
通过yield,每一次读取一行进行处理,如果可以读取到内容,返回该行信息。
可以通过next来读取生成器的内容,每出现一个next,则读取一行内容
若要读取多行,可用for 循环遍历生成器内容
判断是否可迭代,即是否可 for循环—-isinstance,调用模块from collections import Iterable
os模块 import os
判断是否为绝对路径—’/tmp/hello’, ‘hello.png’, ‘qq/hello.mp3’
import os
import random
from os.path import exists, splitext, join
print(os.path.isabs('/tmp/hello'))
print(os.path.isabs('hello'))
生成绝对路径
print(os.path.abspath('/tmp/hello'))
print(os.path.abspath('hello.png'))
print(os.path.join('/home/kiosk', 'hello.png'))
返回一个绝对路径: 当前目录的绝对路径+ 文件名/目录名
print(os.path.join(os.path.abspath('.'), 'hello.png'))
获取目录名或者文件名
filename = '/home/kiosk/Desktop/201808python/day10/hello.png'
print(os.path.basename(filename))
print(os.path.dirname(filename))
创建目录/删除目录 mkdir -p qq/qq1/qq1 递归创建目录
os.makedirs('img/films')
os.mkdir('img')
os.rmdir('img')
创建文件/删除文件
os.mknod('00_ok.txt')
os.remove('00_ok.txt')
文件重命名(mv)
os.rename('data.txt', 'data1.txt')
判断文件或者目录是否存在
print(os.path.exists('img'))
分离后缀名和文件名
print(os.path.splitext('hello.png'))
print(os.path.split('hello.png'))
将目录名和文件名分离
print(os.path.split('/tmp/hello/hello.png'))