3127文件操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3127⽂件操作
查IP地址:终端(功能键+R)+cmd+ipconfig
⼀,⽂件操作基本流程。

1. 打开⽂件,得到⽂件句柄并赋值给⼀个变量。

2. 通过句柄对⽂件进⾏操作
3. 关闭⽂件
参数:1,⽂件路径。

2,编码⽅式。

encode。

3,执⾏动作(打开⽅式):只读,只写,追加,读写,写读....
f:变量,f_obj,file,f_handler,...⽂件句柄。

open windows的系统功能,windows默认编码⽅式:gbk,linux默认编码⽅式utf-8。

f.close()
绝对路径:从根⽬录开始,⼀级⼀级查找知道找到⽂件。

D:\护⼠⽼师主妇空姐联系⽅式.txt
相对路径:在同⼀个⽂件夹下,直接写⽂件名即可。

报错处理:
/U//UU
#'C:\log.txt'
第⼀种:r'C:\log.txt'
第⼆种:C:\\log.txt
as.txt
f = open('D:\护⼠⽼师主妇空姐联系⽅式.txt',encoding='utf-8',mode='r')
content = f.read()
print(content)
f.close() #打不开的解决办法:查看格式,路径的引号,顺序。

在路径前加r((r'D:\护⼠⽼师主妇空姐联系⽅式),或者将\变为\\
⼆,⽂件编码
编码不⼀致时:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb7 in position 0: invalid start byte
⽂件以什么编码⽅式存储的,就以什么编码⽅式打开。

利⽤之前学的编码转换
三,⽂件的打开模式
1. 打开⽂件的模式有(默认为⽂本模式):
r ,只读模式【默认模式,⽂件必须存在,不存在则抛出异常】
w,只写模式【不可读;不存在则创建;存在则清空内容】
a,只追加写模式【不可读;不存在则创建;存在则只追加内容】
五种⽅式:
1:全部读出来f.read()
f = open('log',encoding='utf-8')
content = f.read()
print(content,type(content))
f.close()
2:⼀⾏⼀⾏的读
f = open('log',encoding='utf-8')
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
f.close()
3:将原⽂件的每⼀⾏作为⼀哥列表的元素。

f = open('log',encoding='utf-8')
print(f.readlines())
f.close()
4:读取⼀部分read(n)。

在r模式下,read(n)按照字符去读取。

在rb模式下,read(n)按照字节去读取。

f = open('log',encoding='utf-8')
print(f.read(3))
f.close()
f = open('log',mode='rb')
content = f.read(4)
print(content)
f.close()
5:循环读取。

f = open('log',encoding='utf-8')
for i in f:
print(i.strip())
f.close()
这种⽅法,占⽤内存极少。

不会把⽂件所有内容写⼊内存,⽽只是每次把⼀⾏的内容写⼊到内存。

当下⼀次循环时,
上⼀次内存的内容被覆盖。

所以整个程序 执⾏完成,内存只保存了⼀⾏的内容。

⾮⽂字类的⽂件时,⽤rb
rb,只读,以bytes类型读取。

f = open('D:\护⼠⽼师主妇空姐联系⽅式.txt',mode='rb')
content = f.read()
print(content)
f.close()
r+ 先读,后追加⼀定要先读后写
f = open('log',encoding='utf-8',mode='r+')
content = f.read()
print(content)
f.write('aaa')
f.close()
错误的 #先写后读,随着光标的移动,⽂件内容会被覆盖。

f = open('log',encoding='utf-8',mode='r+')
f.write('BBB')
content = f.read()
print(content)
f.close()
写:
w
没有⽂件,创建⼀个⽂件写⼊内容
f = open('log1',encoding='utf-8',mode='w')
f.write('⼉科王⾦发;剪短发了肯定撒就废了;就')
f.close()
有⽂件,将原⽂件内容清空,在写⼊内容。

f = open('log1',encoding='utf-8',mode='w')
f.write('666')
f.close()
w+ 先写后读。

f = open('log',encoding='utf-8',mode='w+')
f.write('中国')
#print(f.tell()) # .tell()按字节去读光标位置
f.seek(3) #seek(3)按照字节调整光标位置
print(f.read())
f.close()
truncate是截断⽂件,所以⽂件的打开⽅式必须可写,但是不能⽤w或w+等⽅式打开,
因为那样直接清空⽂件了,所以truncate要在r+或a或a+等模式下测试效果。

f = open('log',encoding='utf-8',mode='a')
f.truncate(7) # 按字节对原⽂件截取
f.close()
五,⽂件的修改。

⽂件的数据是存放于硬盘上的,因⽽只存在覆盖、不存在修改这么⼀说,我们平时看到的修改⽂件,都是模拟出来的效果。

⽂件修改的过程:
1,将原⽂件读取到内存。

2,在内存中进⾏修改,形成新的内容。

3,将新的字符串写⼊新⽂件。

4,将原⽂件删除。

5,将新⽂件重命名成原⽂件。

import os #引⼊模块 os
with open('log',encoding='utf-8') as f1,\
open('log.bak',encoding='utf-8',mode='w') as f2: content = f1.read()
new_content = content.replace('alex','SB')
f2.write(new_content)
os.remove('log') #删除旧⽂件
os.rename('log.bak','log') #重命名新⽂件。

相关文档
最新文档