打开与关闭
注意:在文档中,有好几处代码,我只是将要执行的代码放了上面,并没有展示执行后的结果。希望各位自己动手执行下看看结果。这样有助于理解,自己动手实践总比只是看看要好的多。
打开
在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件
open(文件名,访问模式)
f = open('test.txt','w') # f 只是个用来接收的变量名,随意取
说明一下打开中 携带的参数
第一个参数:“文件路径/文件名.文件类型” ,如:f = open('C:\\Users\\Administrator\\Desktop\\test.txt','w')
(注:不加路径的话默认为当前脚本文件所在的路径,咱们正常的路径是 只有一个 \ 的。我们这儿要加两个 \ 是为了转义 \)
第二个参数:是文件打开的方式
文件关闭
关闭就简直不能再简单了,直接执行 close() 方法就好了
如:
# 新建一个文件,文件名为:
test.txtf = open('test.txt','w')
# 关闭这个文件
f.close()
文件的读写
写:使用write 方法,如:
f = open('test.txt','w')
f.write('hello world, i am here!')
f.close()
在使用write()方法写文件时,如果之前不存在这文件,会自动创建并写入,如果原先存在该文件,则会把原文件中的数据清空,再重写
读:我们知道了写用write,那么也该猜到写就用read 了。正如你所想,我们直接来看看文件的read()
f = open('test.txt','r')
content = f.read(5)
print(content)print("-"*30)
content = f.read()
print(content)
f.close()
我们看到上面的read()方法中放了一个参数5,我们先来解释下。
使用read(5)可以从文件中读取数据,参数5表示要从文件中读取的数据的长度(单位是字节),如果没有传入这个参数,直接使用read(),那么就表示读取文件中所有的数据
注意点:使用read(参数),多次读取文件时,每次读取都是从上一次读取截止的地方往后读取。比如文件里面有‘12345’ 五个字,第一次读了read(3),那么第二次再执行read(3)时,会从第三个开始往后读3个字节
我们再看另一个读的方法readlines()
readlines()就像read()没有参数时一样,可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素
f = open('test.txt','r')
content = f.readlines()
print(type(content))
i=1
for temp in content:
print("%d:%s"%(i, temp))
i+=1
f.close()
再看一个 readline() #比上面的readlines()少个 s
f = open('test.txt','r')
content = f.readline()
print("1:%s"%content)
content = f.readline()
print("2:%s"%content)
f.close()
文件的定位读写
:获取当前文件位置
# 打开一个已经存在的文件f =open("test.txt", "r")
str = f.read(3)
print "读取的数据是 : ", str
# 查找当前位置
position = f.tell()
print "当前文件位置 : ", position
str = f.read(3)
print "读取的数据是 : ", str
# 查找当前位置
position = f.tell()
print "当前文件位置 : ", position
f.close()
文件的定位与设置位置
如果在读写文件的过程中,需要从另外一个位置进行操作的话,可以使用seek()
seek(offset, from)有2个参数
offset:偏移量
from:方向
0:表示文件开头
1:表示当前位置
2:表示文件末尾
把位置设置为:从文件开头,偏移5个字节
# 打开一个已经存在的文件
f =open("test.txt", "r")
str = f.read(30)
print "读取的数据是 : ", str
# 查找当前位置
position = f.tell()
print "当前文件位置 : ", position
# 重新设置位置
f.seek(5,0)
# 查找当前位置
position = f.tell()
print "当前文件位置 : ", position
f.close()
把位置设置为:离文件末尾,3字节处
# 打开一个已经存在的文件
f =open("test.txt", "r")
# 查找当前位置
position = f.tell()
print "当前文件位置 : ", position
# 重新设置位置
f.seek(-3,2)
# 读取到的数据为:文件最后3个字节数据
str = f.read()
print "读取的数据是 : ", str
f.close
文件的备份,重命名,删除
先演示下文件的重命名吧,使用os模块中的 rename()方法
如:
import os
os.rename("旧文件","新文件")
再看下删除
rename()可以重命名,那我们用remove()来试一下能不能把文件给移除了
impotent os #注意:使用这两个方法的时候,一定要先引用下 os,因为这两个方法是是属于这个os模块的
os.remove("待移除文件")
最后,我们来看一下文件的备份。先理解下备份,备份其实就是将一个文件里面的数据复制下来,然后写道另一个文件中
直接看下代码吧(要看着代码,自己手动敲一下,再执行看看。动手才是万能的)
#coding=utf-8
oldFileName =input("请输入要拷贝的文件名字:")
oldFile =open(oldFileName,'r')
# 如果打开文件
if oldFile:
# 提取文件的后缀
fileFlagNum = oldFileName.rfind('.')
if fileFlagNum >0:
fileFlag = oldFileName[fileFlagNum:]
# 组织新的文件名字
newFileName = oldFileName[:fileFlagNum] +'[复件]' + fileFlag
# 创建新文件
newFile =open(newFileName, 'w')
# 把旧文件中的数据,一行一行的进行复制到新文件中
for lineContentin oldFile.readlines():
newFile.write(lineContent)
# 关闭文件
oldFile.close()
newFile.close()
附录:
文件夹的相关操作
实际开发中,有时需要用程序的方式对文件夹进行一定的操作,比如创建、删除等
就像对文件操作需要os模块一样,如果要操作文件夹,同样需要os模块
1、创建文件夹
importos
os.mkdir("张三")
2、获取当前目录
importos
os.getcwd()
3、改变默认目录
importos
os.chdir("../")
4、获取目录列表
importos
os.listdir("./")
5、删除文件夹
importos
os.rmdir("张三")