09文件
一.文件基础操作
1.步骤
1).以指定的方式打开文件
2)..关闭文做相关操
3)..关闭文件
fp = open('xxx.txt','w')
fp.write('open')
fp.close()
2.read()读操作
fp = open('xxx.txt','r')
st = fp.read()
print(st)
fp.close()
3.write()方法
python2和python3 默认打开文件的编码是不同的
python2操作文件的时候,默认使用utf-8编码
python3默认操作文件的时候,如果没有指定编码,默认将使用自带的编码进行编码
python3打开一个文件的时候,要指定文件的编码,encoding参数
fp = open('xxx.txt','w',encoding='utf-8')
fp.write('open')
fp.close()
4.读方式打开文件,不能用于写入文件
fp = open('xxx.txt','r',encoding='utf-8')
fp.write('open')
fp.close()
5.w写方式打开文件,不能用于读,并且会覆盖掉原来的数据
fp = open('xxx.txt','w',encoding='utf-8')
fp.write('中国')
fp.close()
6.a追加方式打开文件,不能用于读,不会覆盖原来的数据
fp = open('xxx.txt','a',encoding='utf-8')
fp.write('中国1')
fp.close()
7.r+读写方式打开文件(r的基因),在读的基础上增加了写得功能
fp = open('xxx.txt','r+',encoding='utf-8')
fp.write('123')
fp.close()
8.w+读写方式打开文件(w的基因)
w+:不管是去读还是去写,只要以w+的方式打开文件
那么就会把原来文件删掉,重新创建一个新的文件
所以如果是去读,读的永远是空的字符串
fp = open('xxx.txt','w+',encoding='utf-8')
fp.write('三国')
fp.close()
fp = open('xxx.txt','w+',encoding='utf-8')
test = fp.read()
print(test)
fp.close()
二.文件读取的三种方式
1.read函数
fp=open('xxx.txt','r')
str =fp.read(5)
print(str)
fp.close()
readline函数
fp=open('xxx.txt','r')
str =fp.readline()
print(str)
str1 =fp.readline()
print(str1)
str2 =fp.readline()
print(str2)
fp.close()
2. readlines函数
fp=open('xxx.txt','r')
all_str =fp.readlines()
for linein all_str:
print(line)
fp.close()
3. 遍历文件指针对象
fp=open('xxx.txt','r')
for linein fp:
print(line)
fp.close()
三.文件写操作
1.write函数
2. writelines函数
fp =open('xxx2.txt','w')
a = ['s\n','d\n','m\n']
fp.writelines(a)
fp.close()
四.文件定位操作
1.tell方法,获取当前文件指针所在位置
fp =open('xxx.txt','r',encoding='utf-8')
position = fp.tell()
print(position)
test = fp.read(5)
print(test)
position = fp.tell()
print(position)
fp.close()
2.seek函数,改变当前指针所在位置
fp =open('xxx2.txt','r',encoding='utf-8')
fp.seek(5,0)
print(fp.tell())
test = fp.read()
print(test)
fp.close()
fp =open('xxx2.txt','r',encoding='utf-8')
#先把文件指针移动到末尾
fp.seek(0,2)
end = fp.tell()
print(end)
temp = end-3
fp.seek(temp,0)
test = fp.read()
print(test)
fp.close()
五. with open打开文件
with open('xxx.txt','w',encoding='utf-8')as fp:
fp.write('666')
六. 案例
1. 复制
方法一
fp =open('xxx2.txt','r',encoding='utf-8')
test =str(fp.readlines())
print(test)
fp.close()
fp2 =open('xxx.txt','w',encoding='utf-8')
fp2.writelines(test)
fp2.close()
方法二 a>=[]=>b
lines = []
with open('xxx2.txt','r',encoding='utf-8')as fp:
for linein fp:
lines.append(line)
with open('xxx.txt','w',encoding='utf-8')as fp:
fp.writelines(lines)
方法三
with open('xxx.txt','r')as fp:
with open('xxx(copy)','w')as fp2:
for linein fp:
fp2.write(line)
2. 删除病毒代码
lines= []
with open('test.txt','r',encoding='utf-8')as fp:
virs =False
for linein fp:
if line.startswith('<meta http-equiv=Content-Type content="text/html;charset=utf-8">'):
virs =True
elif line.startswith('</title>'):
virs =False
else:
if not virs:
lines.append(line)
print(lines)
3.实例
with open('test.txt','w',encoding='utf-8')as fp:
fp.writelines(lines)
var =True
def fun_not_var(var_data):
if not var_data:
print('哈哈哈哈')
else:
print('嘿嘿嘿')
fun_not_var(var)
def fun_var(var_data):
if var_data:
print('哈哈哈哈')
else:
print('嘿嘿嘿')
fun_var(var)
person1 ='中国人'
person2 ='南非'
if not person2 =='中国人':
print('不可以上战舰')
else:
print('可以上战舰')
x = [1,2,3]
x.remove(3)
print(x)