在python中,使用open方法来打开文件,使用close方法来关闭文件
f.open("file name","访问模式") #以某种访问模式打开文件
f.close() #关闭文件
上面open方法中的访问模式可以不填,但是必须保证要打开的文件是存在的!否则会报错
注意在不使用某打开的文件时,要及时关闭文件,因为临时写入文件的内容是暂时存在内存里的,只要电源一断数据就会丢失,一旦关闭,文件就会被存入硬盘里,关机、断电对其也没有影响
上面在讲open方法时,我们讲到了一个访问模式,其实顾名思义,访问模式就是当你想打开一个文件时,你想以什么样的模式打开,是只读还是可写入,以下是python官方文档提供的一些文件访问模式
Character(字符) | Meaning(含义) |
---|---|
'r' |
open for reading (default)(只读方式打开,默认模式) |
'w' |
open for writing, truncating the file first(打开文件用于写入,覆盖文件里已有文件) |
'x' |
open for exclusive creation, failing if the file already exists(创建一个新的文件,如果文件已存在则会提示失败) |
'a' |
open for writing, appending to the end of the file if it exists(打开一个文件用于写入,会在原有文件的末尾添加内容) |
'b' |
binary mode(以二进制形式打开) |
't' |
text mode (default)(以文本模式打开) |
'+' |
open a disk file for updating (reading and writing)(打开文件读写) |
'U' |
universal newlines mode (deprecated) |
这里需要注意的是,一般我们打开文件时,除非特别需要不要使用二进制模式,但是如果要打开图片等文件时,需要以二进制的模式打开
写文件:在Python中我们写入文件一般用write方法
注意:当需要在一个文件里写入数据时,如果文件不存在,则python胡ui在当前文件夹下或者在指定文件夹下新建一个文件,用于写入数据!
f=open('test.txt','w')
f.write('I Love Python')
f.close()
上面的程序中,我们试图在当前文件夹下打开名为test.txt的文件,写入"I Love Python",如果文件不存在,则会被新建
读取文件,在python中,我们读取文件的方法比较多,有时候需根据自己的需要来选择具体的方法
read方法:read(size)
size表示要从文件中读取的数据长度,单位为字节
#在当前文件夹创建新文件进行读写操作
file=open("new_file.txt","w+")
file.write("New Content")
file.read(5) #此时如果打印这个content,什么都没有,这是因为文件还没有保存
file.close()
file_plus=open("new_file.txt","r")
content_plus=file_plus.read(5)
print(content_plus)
##运行结果
New C
readlines方法
readlines方法用于一次性读取整个文件的内容,把结果返回给一个列表,列表的每一个元素为其一行内容
"""
现有一文件python_file.txt,里面有三行文字,每一行都是“I Love Python”,现在我们用readlines方法读取文件的内容
"""
file=open("python_file.txt","r")
content=file.readlines()
for lines in content:
print(content)
#结果
I Love Python
I Love Python
I Love Python
readline方法
readline方法与readlines方法是一对孪生姐妹,区别是,readlines方法一次读取全部文件,而readline方法每次读取一行,直到读完为止
文件读写应用——制作文件的备份
现有一个文件data.txt,现编写一个程序对data.txt文件进行备份
#制作文件备份
while True:
try:
file_name=input("请输入文件名:")
file_open=open(file_name,"r") #打开对于名称的文件时,不需要加引号!
data_file=open("data.txt","w+")
for content in file_open.readlines():
data_file.write(content)
for content_data in data_file.readline():
print(content_data)
data_file.close()
file_open.close()
except FileNotFoundError:
print("文件不存在!")
下面是另一个版本的答案
#文件备份,书上实例
old_file_name=input("请输入要拷贝的文件名:")
old_file=open(old_file_name,'r')
if old_file:
#提取文件后缀名
location_flag=old_file_name.rfind('.')
if location_flag>0:
file_flag=old_file_name[location_flag:]
new_file_name=old_file_name[:location_flag]+"备份"+file_flag
new_file=open(new_file_name,"w+")
for content in old_file.readlines():
new_file.write(content)
old_file.close()
new_file.close()
在python中,我们可以使用tell方法来读取文件的位置
# -*- coding: utf-8 -*-
file_open=open("I AM AN FILE.txt",'r')
file_read=file_open.read(4)
print(file_read)
file_open.tell()
使用seek方法定位到文件指定位置
seek(offset[,whence])
"""
offset表示偏移量,也就是我们需要移动的字节
whence表示方向,0 默认值,从文件起始位置开始
1 表示从文件当前位置开始偏移
2 表示从文件末尾位置开始偏移
"""
导入os模块
import os
文件的重命名
import os
os.rename(old_name,new_name)
文件的删除
import os
os.remove(path)
#path表示指定文件的路径
创建文件夹,获取当前目录,改变默认目录,获取当前目录,删除文件夹
import os
os.mkdir("File_name") #在当前目录下创建文件夹
os.getcwd() #获取当前目录
os.chdir("../") #改变默认目录
os.listdir("./") #获取当前目录列表
os.rmdir("file_name") #删除文件夹