查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:'
第一种:r'C:'
第二种:C:\
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')adline())adline())adline())adline())adline())f.close()3:将原文件的每一行作为一哥列表的元素。f = open('log',encoding='utf-8') adlines())f.close()4:读取一部分read(n)。在r模式下,read(n)按照字符去读取。在rb模式下,read(n)按照字节去读取。f = open('log',encoding='utf-8') ad(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) 按照字节调整光标位置
ad())
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 = place('alex','SB')f2.write(new_content) os.remove('log') #删除旧文件 os.rename('log.bak','log') #重命名新文件
转载于:.html
本文发布于:2024-01-30 13:28:44,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170659252820339.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |