Python-文件处理
一、在 Python 中使用文件的关键函数是 open() 函数。open() 函数有两个参数:文件名(file)和模式(access_mode)
access_mode参数有:
r : 以只读方式打开文件。文件的指针将在文件开头。这是默认模式。
rb: 以二进制格式打开一个文件用于只读。一般用于非文本文件如图片等
r+ : 打开一个文件用于读写(文件的指针将在文件开头)
w : 打开一个文件只用于写入,如果文件存在,删除重新编辑,否则新建
wb : 以二进制格式打开一个文件只用于写入
w+ : 打开一个文件用于读写。如果文件存在,删除重新编辑,否则新建写入
a : 打开文件追加内容,存在文件,在文件原内容后增加,否则新建写入
a+ : 打开一个文件用于读写。存在文件,在文件原内容后增加,否则新建用于读写
ab : 以二进制格式打开一个文件用于追加,存在文件,在文件原内容后增加,否则新建写入
ab+ : 以二进制格式打开一个文件用于读写。存在文件,在文件原内容后增加,否则新建用于读写
#往文件写入数据
file.write(string) #可将任何字符串写入一个打开的文件
file.flush() #刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件
file.close() #刷新缓冲区里任何还没写入的信息,并关闭该文件
#读取文件内容
file.read([u'读取字符长度']) #从一个打开的文件中读取一个字符串
file.close() #刷新缓冲区里任何还没写入的信息,并关闭该文件。
#其他与文件相关的方法:
file.tell() #告诉你文件指针的当前位置
file.seek(offset=10,whence=2)
#改变当前文件指针的位置。必须以二进制方式打开的文件。offset表示要移动的字节数
#whence变量指定开始移动字节的参考位置。如果whence为0,将文件的开头作为移动字节的参考位置。如果
#设为1,则使用当前的位置作为参考位置。如果为2,那么该文件的末尾将作为参考位置
-
创建新文件
f = open("myfile.txt","x") #创建,创建一个空的新文件 f2 = open("myfile1.txt","w") #写入,如果文件不存在,则创建新文件 f3 = open("myfile3.txt","a") #追加,如果文件不存在,则创建新文件
-
读取文件
with open("test.txt","r",encoding="utf-8") as file: print(file.tell()) # 改变指针位置,读取中间部分内容 file.seek(6,0) #以文件开头开始,改变指针移动六个字节 print(file.tell()) #现在指针指在第六个字节处 print(file.readline()) #一行一行打印,将指针所在的这行打印出来 print(file.read(5)) #指定要返回的字符数("n基础"-一个中文等于两个字节) print(file.read()) #从指针所在位置后的内容全部打印出来 print(file.tell()) #指针在内容最末端 #注:指针位置影响最终获取到的值:如果先写入再读,指针在最后一位,容易读不到文件内容
-
写入文件
#例一: str1= ''' Python基础 接口自动化 web自动化 app自动化 ''' file4 = open(file='test.txt',mode='w',encoding='utf-8') print(file4.write(str1)) file4.close() #例二: html = ''' <html> <body> <h1>我的第一个标题</h1> <p>我的第一个段落。</p> </body> </html> ''' file1 = open(file='test.html',mode='w') #删除原内容再写入(覆盖原内容) print(file1.write(html)) file1.close()
-
追加文件
file2 = open(file='test.html',mode='a') #在原文内容后追加 #print(file2.write("my name is vv")) file3 = open(file='test.html',mode='a+') #用于读写,在原文内容后追加 #print(file3.write("python is so easy"))
-
删除文件
import os # os.remove('myfile.txt') #当文件不存时容易报错 # f = open('myfile.txt','x') #检查文件是否存在 if os.path.exists('myfile.txt'): os.remove('myfile.txt') else: print("未找到该文件") #删除整个文件夹 # os.rmdir('a') #只能删除空文件 print(os.getcwd()); #返回当前工作目录 file0 = '/Users/vv/PycharmProjects/untitled3.9/functions/B' os.mkdir(path=file0,mode=755);
-
os.path模块详解
#os.path模块
file0 = '/Users/vv/PycharmProjects/untitled3.9/functions/B'
print(os.path.abspath('.')) #返回当前文件的绝对路径 print(os.path.getatime('.')) #返回最近一次访问文件的时间 print(os.path.getctime('./B')) print(os.path.basename(file0)) #返回: B #返回文件名 print(os.path.dirname(file0)) #返回文件夹的路径:/Users/vv/PycharmProjects/untitled3.9/functions print(os.path.split(file0)) #返回文件夹与文件名的元祖存储模式:('/Users/vv/PycharmProjects/untitled3.9/functions', 'B') print(os.path.join(file0,'test')) #返回拼接:/Users/vv/PycharmProjects/untitled3.9/functions/B/test import time print(time.gmtime(os.path.getmtime(file0))) #返回时间: time.struct_time(tm_year=2021, tm_mon=7, tm_mday=23, tm_hour=6, tm_min=26, tm_sec=32, tm_wday=4, tm_yday=204, tm_isdst=0)
-
总结:使用with open() as file,这种语法如果出现错误不需要再次关闭文件
三十六般武艺,七十二般变化,修练出个人品牌并发出光芒