1.file(name[,mode[,buffering]])文件的打开或创建
mode可以取如下的值
参数 | 说明 |
---|---|
r | 以只读的方式打开 |
r+ | 以读写的方式打开 |
w | 以写入的方式打开,先删除文件原有内容再重新写入新的内容,如果文件不存在则创建一个新的文件 |
w+ | 以读写的方式打开,先删除文件原有内容再重新写入新的内容,如果文件不存在则创建一个新的文件 |
a | 以写入的方式打开文件,在文件的末尾追加新的内容,如果文件不存在则创建1个新的文件 |
a+ | 以读写的方式打开文件,在文件的末尾追加新的内容,如果文件不存在则创建1个新的文件 |
文件创建、写入和关闭操作:
context="""hello world"""
f = file('hello.txt','w')
f.write(context)
f.close()
2.文件的读取:
1.按行读取方式readline()
每次读取文件中的一行,需要使用永真表达式循环读取文件
示例:
f=open('hello.txt')
while True:
line = f.readline()
if line:
print line,
else:
break
f.close()
2.多行读取方式readlines()
使用readlines()读取文件,需要通过循环访问readlines()返回列表中的元素
示例:
f=f.open('hello.txt')
lines = f.readlines()
for line in lines:
print line,
3.一次性读取方式read()
read()将从文件中读出所有的内容,并赋值给1个字符串变量
示例:
f=open('hello.txt')
context=f.read()
print context
可以通过控制read()参数的值,返回指定字节的内容:
f=open('hello.txt')
context=f.read(5)#读取文件中前5个字节的内容,此时文件的指针移动到第5个字节处
print context
print f.tell()
context=f.read(5)
print context
print f.tell()
f.close()
3.文件的写入
可以使用write(),writelines()方法写入文件,使用write()方法把字符串写入文件,writelines()方法可以把列表中存储的内容写入文件
f=file("hello.txt","w+")
li=["hello world\n","hello China\n"]
f.writelines(li)
f.close
4.文件的删除
文件的删除需要用到os和os.path模块,文件的删除通过调用remove()函数实现。例如:首先创建1个文件hello.txt,然后判断该文件是否存在,如果存在则删除
示例:
import os
file('hello,txt','w')
if os.path.exists('hello.txt'):
os.remove('hello.txt')
5.文件的复制
file类没有提供直接复制文件的方法,但是可以使用read(),write()方法模拟实现文件的拷贝功能
示例:
src=file("hello.txt","w")
li = ["hello world\n","hello China\n"]
src.writelines(li)
src.close()
#把hello.txt拷贝到hello2.txt
src=file("hello.txt","r")
dst=file("hello2.txt","w")
dst.write(src.read())
src.close()
dst.close()
shutil模块是另一个文件、目录的管理接口,提供了一些用于复制文件、目录的函数。
copyfile(src,des)函数可以实现文件的拷贝
使用shutile模块实现文件的拷贝
import shutil
shutil.copyfile("hello.txt","hello2.txt")
shutil.move("hello.txt","../")
shutil.move("hello2.txt","hello3.txt")
6.文件的重命名
*os模块的函数rename()可以对文件或目录进行重命名*
import os
li = os.listdir(".")#返回当前目录的文件列表
print li
if "hello3.txt" in li:
os.rename('hello3.txt','hi.txt')
elif 'hi.txt' in li:
os.rename('hi.txt','hello3.txt')
示例2:
#把后缀名为"html"的文件修改为"htm"后缀的文件
import os
files = os.listdir(".")#找到当前文件夹的所有文件
for filename in files: #遍历所有文件
pos = filename.find(".") #找到.所在的位置,并把值赋给pos
if filename[pos + 1:]=="html":#找到.后面是html的文件
newname=filename[:pos+1]+"htm" #将新文件命名为xxx.htm
os.rename(filename,newname) #重新命名文件
为获取文件的后缀名,这里找到"."所在的位置,然后通过分片filename[pos+1:]截取后缀名,这个过程可以使用os.path模块的函数splitext()实现,splitext()返回一个列表,列表中的第1个元素表示文件名,第2个元素表示文件的后缀名
示例:
import os
filenames = os.listdir(".")
for filename in filenames:
li = os.path.splitext(filename)
if li[1]==".htm":
newname=li[0]+".html2"
os.rename(filename,newname)