python的文件操作
需要注意文本操作输入输出都是字符串,主要不同维度数据类型的输出输入方法
1.打开文件
使用open()函数打开文件。这个函数需要至少两个参数:文件名和模式(如只读、只写、追加等)。写的时候这个函数可以在没有该文件时候创建一个。encodeing='utf-8'
来设置编码格式
open打开的文件是一个对象,如果不调用任何函数如read(),得到的就是一个obj
一些打开模式:
file = open('example.txt', 'r')
这行代码不会创建新文件,它仅用于打开已存在的文件以进行读取(‘r’ 模式)。如果指定的文件 ‘example.txt’ 不存在,Python 会抛出一个 FileNotFoundError 异常。
file = open('example.txt', 'r') # 打开文件以只读模式
# 或者
file = open('example.txt', 'w',encodeing='utf-8') # 打开文件以只写模式,如果文件已存在则覆盖
# 或者
file = open('example.txt', 'a') # 打开文件以追加模式,写入的数据会被添加到文件末尾
2.读取文件
一旦文件被打开,你就可以使用文件对象的read()、readline()或readlines()方法来读取文件内容。
一些读写方法:
content = file.read() # 读取文件全部内容
print(content)
seek() 函数的运用:
需要注意如果在utf-8中一个中文为3个字节,偏移量是3,seek(3)
def file_wr_read(filename):
f=open(filename,'w+',encoding='utf-8')#创建文件,光标在0的位置
f.write('word')#写入文本后文件的光标会停留在最后
f.seek(0)#用seek将文件的光标重新放到前边,这样才可以从头开始读取文件
f.read()
f.close()
if __name__ == '__main__':
file_wr_read('newfile.txt')
3.写入文件
使用文件对象的write()或writelines()方法写入文件。
file.write('Hello, Python!\n') # 写入字符串
file.writelines(['This is a line.\n', 'This is another line.\n']) # 写入一个字符串列表
file.close() # 写入完成后,不要忘记关闭文件
4.追加文件
与写入文件类似,但使用’a’模式打开文件,以便在文件末尾追加内容。
file = open('example.txt', 'a')
file.write('This will be appended.\n')
file.close()
5.关闭文件
完成文件操作后,应使用close()方法关闭文件。这是一个好习惯,可以释放系统资源。
因为被open()后会占用内存资源
先打开的文件后关,后打开的文件先关
file.close()
6.使用with语句
为了简化文件操作并确保文件正确关闭,推荐使用with语句。with语句会在代码块执行完毕后自动关闭文件,即使在读写文件时发生了异常。
with open('example.txt', 'r') as file:
content = file.read()
print(content)
# 文件已自动关闭,无需调用close()
一个简单的创建文本的代码
def write_file():
file=open('newfile','w',encoding='utf-8')
file.write('words')
file.close()
def read_file():
file=open('newfile.txt','r',encoding='utf-8')
content=file.read()
print(content)
file.close()
if __name__ == '__main__':
write_file()
数据的组织维度
文档的写入需要内容是字符串,列表等数据是没有办法写入的
1.一维数据的处理
需要注意一维数组二维数组的写入需要用.join转化成一个长的字符串
例如将列表中的元素用逗号将一维数据连接成字符串,对于二位列表,需要遍历每一个元素列表,即在一维循环内完成join
line=','.join(item)
2.二维数据的处理
import json
目录与文件的相关操作
import os
import os
print(os.getcwd()) #D:\python学习\pythonProject\try1
用这个模块可以指定路径
例子之文件的创建,逐行读取,识别字段,自动回复
file= open('content.txt','w',encoding='utf-8')
file.writelines(['111|1111\n','222|2222'])
file.close()
def find(que):
with open('content.txt','r',encoding='utf-8')as file:
while True:
con = file.readline()
if con== '':
break
key=con.split('|')[0]
answer=con.split('|')[1]
if key in que:
return answer
return False
if __name__ == '__main__':
ans=find('333')
print(ans)