文件读写
open()与file()
open()方法使用python内建函数操作文件
file()则是构建了一个file文件类来打开文件
函数语法
open(name[, mode[, buffering]])
name:文件名
mode:操作模式
buffering:0 - 不寄存读取的数据,1 - 寄存一行数据
,大于1的整数表示寄存区的缓冲大小
文件操作模式
mode | description |
---|---|
r | 只读(默认使用) |
w | 只写 |
x | 每次都创建新文件写入 |
a | 追加 |
b | 二进制模式(组合使用) |
t | 文本模式(组合使用,默认使用) |
+ | 读写模式(组合使用) |
U | 通用换行模式(组合使用) |
Tips:
-
x
与w
功能类似,但若创建文件已存在x
模式下会抛出FileExistsError
错误 -
w
模式每次写入前会清空已有的文件内容 -
r+
,w+
,a+
均为可读写模式操作,区别是a+
是在文件末尾追加内容,w+
是清空文件原本内容后再写入新内容,r+
是可以写到文件的任意位置(配合file.seek()方法)
file对象常用方法
- file.read([size])
size 未指定则返回整个文件,如果 文件大小 > 2 倍内存则有问题,读到文件尾时返回""(空字串) - file.readline()
返回一行 - file.readlines([size])
返回包含size行的列表,不指定则返回所有 - file.write("msg")
字符串以外的数据写入需要使用str()
函数进行转换 - file.tell()
返回当前文件指针位置 - file.seek(偏移量, [起始位置])
偏移量:单位比特,可正可负
起始位置:0 - 文件头(默认); 1 - 当前位置; 2 - 文件尾 - file.flush()
把内部缓冲区的数据立刻写入文件 - file.close()
关闭文件 - 通过迭代器访问文件内容
for line in file:
print(line)
获取文件大小
os.path.getsize
import os
def get_file_size(path):
"""
获取文件大小,结果保留两位小数,单位MB
"""
f = os.path.getsize(path)
f = f/float(1024 * 1024)
return round(f, 2)
获取文件创建时间
os.path.getctime
def get_file_create_time(path):
"""
获取文件创建时间
"""
t = os.path.getctime(path)
return timeu.time_format(t)
获取文件最新修改时间
os.path.getmtime
import os
import Utils.TimeUtil as timeu
def get_file_modify_time(path):
"""
获取文件修改时间
"""
t = os.path.getmtime(path)
return timeu.time_format(t)
相关拓展实现
自定义工具类引用
import Utils.TimeUtil as timeu
时间戳转换方法
def time_format(timestamp):
"""
时间戳格式化 1479264792
2016-11-16 10:53:12
"""
convert = time.localtime(timestamp)
return time.strftime('%Y-%m-%d %H:%M:%S', convert)
网友评论