1.open
使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。
try:
f = open( ' thefile.txt ' )
except:
print ”open file error“
open的第二个参数为打开方式, r为read(默认), w为write,a为附加, b为二进制, c当文件不存在时创建文件
2.读文件
读取整个文件
try :
all_the_text = f.read( )
finally :
f.close( )
或者 all_the_text = f.readlines()
读取固定字节
try :
while True:
chunk = f.read( 100 )
if not chunk:
break
do_something_with(chunk)
finally :
f.close( )
读一行
line = f.readline( )
读取多行
line=f.readlines(n)
如果文件是文本文件,还可以直接遍历文件对象获取每行:
for line in f:
process line
3.写文件
写数据
f.write(all_the_text)
写入多行
f.writelines(list_of_text_strings)
注意,调用writelines写入多行在性能上会比使用write一次性写入要高。
每次调用 readlines(sizehint) 函数,返回的必然都是完整的行数据。通常情况下,Python 会自动将用户指定的 sizehint 的值调整成内部缓存大小的整数倍。
file在python是一个特殊的类型,它用于在python程序中对外部的文件进行操作。file有file的方法和属性。
创建一个file对象:
file(name[, mode[, buffering]])
file()函数用于创建一个file对象,它有一个别名叫open(),它们是内置函数。name是文件的名字,mode 是打开模式,buffering如果为0表示不进行缓冲;如果为1表示进行“行缓冲“;如果是一个大于1的数表示缓冲区的大小,以字节为单位。
file属性:
closed #标记文件是否已经关闭,由close()改写
encoding #文件编码
mode #打开模式
name #文件名
newlines #文件中用到的换行模式,是一个tuple
file的读写方法:
F.read([size]) #size为读取的长度,以byte为单位
F.readline([size])
#读一行,如果定义了size,有可能返回的只是一行的一部分
F.readlines([size])
#把文件每一行作为一个list的一个成员,并返回这个list。它的是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
F.write(str)
#把str写到文件中,write()并不会在str后加上一个换行符
F.writelines(seq)
#把seq的内容全部写到文件中。这个函数也只是忠实地写入,不会在每行后面加上任何东西。
F.close()
#关闭文件。python会在一个文件不用后自动关闭文件。
F.flush()
#把缓冲区的内容写入硬盘
F.fileno()
#返回一个长整型的”文件标签“
F.isatty()
#文件是否是一个终端设备文件(unix系统中的)
F.tell()
#返回文件操作标记的当前位置,以文件的开头为原点
F.next()
#返回下一行,并将文件操作标记位移到下一行。把一个file用于for ... in file这样的语句时,就是调用next()函数来实现遍历的。
F.seek(offset[,whence])
#将文件打操作标记移到offset的位置。offset一般是相对偏移,一般为正数。whence为 0表示从头计算,1表示以当前位置为原点计算,2表示以文件末尾为原点计算。如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
F.truncate([size])
#把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。
os模块中的文件操作:
os.path属性:
sep='/':用来分隔文件路径名的字符串
pathsep=':':用于分隔文件路径的字符串
curdir='.':当前工作目录的字符串名称
pardir='..':当前工作目录的父目录
1.重命名:os.rename(old, new)
2.删除:os.remove(file)
3.列出目录下的文件:os.listdir(path)
4.获取当前工作目录:os.getcwd()
5.改变工作目录:os.chdir(newdir)
6.创建多级目录:os.makedirs(r"c:\python\test")
7.创建单个目录:os.mkdir("test")
8.删除多个目录:os.removedirs(r"c:\python") #删除所给路径最后一个目录下所有空目录。
9.删除单个目录:os.rmdir("test")
10.获取文件属性:os.stat(file)
11.修改文件权限与时间戳:os.chmod(file)
12.执行操作系统命令:os.system("dir")
13.启动新进程:os.exec(), os.execvp()
14.在后台执行程序:osspawnv()
15.终止当前进程:os.exit(), os._exit()
16.分离文件名:os.path.split(r"c:\python\hello.py") ——> ("c:\\python", "hello.py")
17.分离扩展名:os.path.splitext(r"c:\python\hello.py") ——> ("c:\\python\\hello", ".py")
18.获取路径名:os.path.dirname(r"c:\python\hello.py") ——> "c:\\python"
19.获取文件名:os.path.basename(r"r:\python\hello.py") ——> "hello.py"
20.判断文件是否存在:os.path.exists(r"c:\python\hello.py") ——> True
21.判断是否是绝对路径:os.path.isabs(r".\python\") ——> False
22.判断是否是目录:os.path.isdir(r"c:\python") ——> True
23.判断是否是文件:os.path.isfile(r"c:\python\hello.py") ——> True
24.判断是否是链接文件:os.path.islink(r"c:\python\hello.py") ——> False
25.获取文件大小:os.path.getsize(filename)
26.*******:os.ismount("c:\\") ——> True
27.搜索目录下的所有文件:os.path.walk()
glob.glob(path) : return a list of the paths matching the path. The path could be either absolute or relative, and can contain wildcards like *,?,[] etc.