Python基础:07.文件、时间与日期
文件操作
1. 文件的打开
open()函数
open() 函数用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数file_name = open(file, mode='r')
函数常用形式是接收两个参数:文件名(file)和模式(mode),默认是只读模式,打开后返回给file_name这个对象,用于后续的文件操作
常见的模式如下:红框为常用的模式
使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法
2. 读文件
读文件的方法都会随着读取进度而推进文件指针!!!
2.1 file.read(size)
从文件读取指定的字节数。如果未给定或为负则读取所有
1 |
|
hello worl
1 |
|
hello world!
hello python!
hello wanyu!
2.2 file.readline(size)
用于从文件读取整行,包括 “\n” 等转义字符
如果指定了一个非负数的参数,则返回指定大小的字节数,包括 “\n” 字符。若未给定参数则读取文件首行
1 |
|
hello world!
‘hello world!\n’
hello pyth
2.3 file.readlines()
该方法用于读取所有行(直到结束符 EOF)并返回列表!!!
该列表一般由 Python 的for... in ...
结构进行处理。 如果碰到结束符 EOF 则返回空字符串。
1 |
|
[‘hello world!\n’, ‘hello python!\n’, ‘hello wanyu!’]
hello world!
hello python!
hello wanyu!
3. 写文件
3.1 file.write()
用于向文件中写入指定字符串。要注意文件打开方式
1 |
|
1 |
|
1 |
|
1 |
|
123
456
hello file
hello java
3.2 file.writelines( [ str ] )
方法用于向文件中写入一序列的字符串。这一序列字符串可以是由迭代对象产生的,如一个字符串列表。换行需要制定换行符\n
1 |
|
1 |
|
菜鸟教程 1
菜鸟教程 2
3.3 文件指针
写文件时候经常会用到文件指针
3.3.1 file.tell()
tell() 方法返回文件的当前位置,即文件指针当前位置
1 |
|
读取的内容是: 菜鸟教程 1
12
3.3.2 file.seek(offset [ , whence])
移动文件指针到指定位置
- offset – 开始的偏移量,也就是代表需要移动偏移的字节数,如果是负数表示从倒数第几位开始
- whence:0 代表从文件开头开始算起,1 代表从当前位置开始算起,2 代表从文件末尾算起。默认值为0
1 |
|
读取的内容是: 菜鸟教程 1
12
0
4. 关闭文件
文件未关闭容易导致很多错误
1 |
|
正确的应该先关闭
1 |
|
0
1
2
3
4
在写入的时候有可能一些中间过程出问题,导致程序无法正常运行,也就无法运行close语句,这时候可以用处理异常的方法,通过finally语句,把文件关闭
1 |
|
error: 5
一般更推荐使用的是:with open() as name:
这种结构可以自动关闭文件,不用担心出问题,同时也命名了新文件。但要处理异常还是要用try结构
1 |
|
0
1
2
3
4
file.closed()方法
如果文件已关闭,则为True
1 |
|
True
时间与日期
这部分建议用到啥查啥,Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间
time.time()
- 函数 time.time() 用于获取当前时间戳
- 时间间隔是以秒为单位的浮点小数,每个时间戳都以自从 1970 年 1 月 1 日午夜(历元)经过了多长时间来表示
1 |
|
1583160214.5189838
time.localtime()
- 函数time.localtime()用于将返回浮点数的时间戳方式向时间元组转换
- 可以将时间戳作为参数输入,也可以不输入
1 |
|
time.struct_time(tm_year=2020, tm_mon=3, tm_mday=2, tm_hour=22, tm_min=48, tm_sec=23, tm_wday=0, tm_yday=62, tm_isdst=0)
time.struct_time(tm_year=2020, tm_mon=3, tm_mday=2, tm_hour=22, tm_min=48, tm_sec=23, tm_wday=0, tm_yday=62, tm_isdst=0)
时间元组是用一个元组装起来的9组数字处理时间
time.strftime()
time.strftime()用于格式化日期
1 |
|
2020-03-02 22:47:23
calendar模块
- Calendar模块有很广泛的方法用来处理年历和月历
1 |
|
March 2020
Mo Tu We Th Fr Sa Su
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31