文件操作的时候
1.打开文件,使用open(),赋值给一个变量名;即取得句柄(对象)
2.通过文件句柄(对象)执行命令
3.保存并关闭文件,使用close()
一、读操作
1.打开文件
变量名=open('文件路径','打开方式',encoding='字符编码')
打开方式有两种:
1.文本
‘r’ 只读,【默认】
‘w’写文件【不可读;不存在则创建;存在则清空原来的内容再写新内容;】,
‘a’追加模式【不可读;不存在则创建;存在则以追加的方式写入新的内容;】
2.字节(二进制文件)
(b 表示以字节的方式操作,不需要编码的参数 encoding)
rb 字节方式读取
wb 字节方式写入,清空原文件内容
ab 字节方式的追加写入字符编码就是解释文本的方法,python在 windows 下是 gbk,在 linux 下是 utf-8,与文本不同的编码打开方式会造成乱码
2.对句柄(对象)进行操作
data = f_obj.read() #把每行的数据赋给变量名data
print(data)
3.关闭文件用close()
实际操作的例子
f_obj = open('./a.txt', 'r') ##文件里面有who\n are\n you\n !\n
>-------------------------------
# 读全部
content = f_obj.read()
print(content)
who
are
you
!
f_objf.seek(0)
#是按照光标来操作的,经过上一次的操作现在光标移动到了最后一行,继续read则会无内容;
因此要移动光标到第一行
# 每次读一行
line1 = f_obj.readline() #只会输入一行的内容
line2 = f_obj.readline()
line3 = f_obj.readline()
line_list = f_obj.readlines() # 一次读完,把每一行的内容放在列表中,成为列表中的一个元素;readlines
二、写操作
[root@localhost ~]# cat a.txt
name
shark
[root@localhost ~]# python3 #进入python3
Python 3.7.6 (default, Dec 25 2019, 19:34:47)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>----------------------------------------------
写普通文件
>>> f =open('a.txt','w',encoding="utf-8") #其实在打开的一瞬间就会清空里面的内容
>>> for i in ["who","age"]:
... f.write("{}\n".format(i)) #这个是格式化输出层的内容
...
4 #这个数输入的字符数
4
>>> exit()
[root@localhost ~]# cat a.txt
who
age
>---------------------------------------------
写bytes文件
f_obj=open("hao\n",encoding='utf=8')
b1 = bytes('洋洋\n', encoding='utf-8')
b2 = '杨哥\n'.encode('utf-8')
#定义bytes内容
f_obj.writelines([b1, b2]) #多行同时写入
f_obj.close()
可以用for来找语句呀,这样很方便。
>>> file_name = './a.txt'
>>> f_obj = open(file_name, 'r')
>>> for line in f_obj:
... print(line)
其他的方法
f.name # 文件名
f.closed # 文件是否关闭
f.readable() # 文件是否可读
f.writable() # 文件是否可写
f.flush() # 立刻将文件内容从内存刷到硬盘
例子:
with open("./python_learning/file.db",'r',encoding="utf-8") as f:
contend =f.read()
file_li=contend.split('-')
for line in file_li:
line = line.replace('=',': ').replace(';','\n')
file_name=line.split(': ')[1]
file_name1=file_name.split('\n')[0]
with open("{}.yaml".format(file_name1),'w') as wor: wor.write(line)
with (打开方式)... as ...:
pass
python2如果要打开文件要导入
import io
io.open()