python文件操作及os模块常用命令
1、文件打开
文件句柄 = open('文件路径', '模式')
2、文件操作
打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。
三种基本的文件操作模式:r(only-read)、w(only-write)、a(append)
r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】 w,只写模式【不可读;不存在则创建;存在则清空内容】 x, 只写模式【不可读;不存在则创建,存在则报错】 a, 追加模式【可读; 不存在则创建;存在则只追加内容】 "+" 表示可以同时读写某个文件 r+, 读写【可读,可写】 w+,写读【可读,可写】 x+ ,写读【可读,可写】 a+, 写读【可读,可写】 "b"表示以字节的方式操作 rb 或 r+b wb 或 w+b xb 或 w+b ab 或 a+b 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码 3.关闭文件 使用close() 补充:with语句自带使用close()方法, 这也是为了防止打开文件忘记关闭 比如: with open() as f_read:#打开文件 是不需要添加close()的。
文件操作
文件名.read(n):读取指定个数的字符,文件从光标位置开始
注意:python3版本读取的是字符
python2版本读取的是字节
在读取完第一次字符时,第二次读取从上次读取完的字符开始
比如:
f = open("test",mode="r",encoding="utf8") data = f.read(5) data2 = f.read(6) print(data) print(data2) 得到的答案是 globa l
1 f.readline 读取一行,光标到下一行行首 2 f.readlines 显示列表结果,每一个元素是一行内容 3 4 行与字符串的拼接 5 使用join用法 6 文件名.join([文件名,“需要添加的字符串”]) 7 循环整个文件,并在一行中拼接使用for循环 8 9 2.write 10 f =open(name,mode=w) 修改文件可读权限 11 文件名.write("") 覆盖文件信息 12 13 文件名.write("\n") 换行 14 15 f =open(name,mode="a")追加信息,原来文件信息不变 16 17 f =open(name,mode="x")原有的文件不覆盖,会报错;没有的文件重新创建 18 19 f=write("")把内容添加到内存,在一定时间内显示出来 20 21 f.writelines(["11\n","22\n"])写多行 22 f.truncate() 截断 只能在写权限操作
可读可写模式
1 r+ 追加写 2 默认光标在开始位置 3 w+ 首先会覆盖,清空,然后再写,seek调整 4 5 a+ 总是在最后位置添加。光标在文件最后位置 6 无论光标在什么位置,一定是追加写: 7 想读取内容:seek调增 8 9 4.flush操作 10 f=flush("") 直接显示,内容直接存储在硬盘上 11 比如: 12 进度条操作
sys.stdout.write("")相当于print
sys.stdout 文件
循环打印#
import sys
for i in range(10):
sys.stdout.write("#")
sys.stdout.flush()
import time
time.sleep(0.5)
1 import sys 2 for i in range(6): 3 s = "\r%s%% %s"%(i,"?"*i) 4 sys.stdout.write(s) 5 sys.stdout.flush() 6 import time 7 time.sleep(0.5)
3、其他操作
tell和seek
tell:查询文件中光标位置
seek:光标定位
f = open('file','r')
print(f.tell()) #光标默认在起始位置
f.seek(10) #把光标定位到第10个字符之后
print(f.tell()) #输出10
f.close()
----------------------
f = open('file','w')
print(f.tell()) #先清空内容,光标回到0位置
f.seek(10)
print(f.tell())
f.close()
----------------------
f = open('file','a')
print(f.tell()) #光标默认在最后位置
f.write('你好 世界')
print(f.tell()) #光标向后9个字符,仍在最后位置
f.close()
flush 同步将数据从缓存转移到磁盘
示例,实现进度条功能
import sys,time #导入sys和time模块
for i in range(40):
sys.stdout.write('*')
sys.stdout.flush() #flush的作用相当于照相,拍一张冲洗一张
time.sleep(0.2)
下面代码也能够实现相同的功能
import time
for i in range(40):
print('*',end='',flush=True) #print中的flush参数
time.sleep(0.2)
truncate 截断
不能是r模式下执行,
w模式下,已经清空所有数据,使用truncate没有任何意义,
a模式下,截断指定位置后的内容。
f = open('file','a')
f.truncate(6) #只显示6个字节的内容(6个英文字符或三个汉字),后面的内容被清空。
os模块
1. os.name——判断现在正在实用的平台,Windows 返回 ‘nt'; Linux 返回’posix'
2. os.getcwd()——得到当前工作的目录。
3. os.listdir()——指定所有目录下所有的文件和目录名。
4. os.remove()——删除指定文件
5. os.rmdir()——删除指定目录
6. os.mkdir()——创建目录(创建一层) os.makedirs()--递归创建目录
7. os.path.isfile()——判断指定对象是否为文件。是返回True,否则False
8. os.path.isdir()——判断指定对象是否为目录。是True,否则False。
9. os.path.exists()——检验指定的对象是否存在。是True,否则False
10. os.path.split()——返回路径的目录和文件名。
11. os.getcwd()——获得当前工作的目录
12. os.system()——执行shell命令。
13. os.chdir()——改变目录到指定目录
14. os.path.getsize()——获得文件的大小,如果为目录,返回0
15. os.path.abspath()——获得绝对路径。
16. os.path.join(path, name)——连接目录和文件名。
17.os.path.basename(path)——返回文件名
18. os.path.dirname(path)——返回文件路径
我的小鱼你醒了
还认识早晨吗
昨夜你曾经说
愿夜幕永不开启

浙公网安备 33010602011771号