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,这种语法如果出现错误不需要再次关闭文件

posted @ 2021-07-23 12:34  美女爱找茬  阅读(60)  评论(0编辑  收藏  举报