码迷,mamicode.com
首页 > 编程语言 > 详细

[Python]学习基础篇:文件和目录

时间:2018-01-03 16:07:37      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:python中文件的那点事

文件

文件是数据在外部介质上的数据的集合,对于文件在Linux系统上包括普通文件,目录文件,二进制文件,设备文件等。

  • 文件的打开或者创建 
    方法:open(‘file_name’,’打开方式’[,buf_size]) 
    buf_size:参数指的是文件缓存区的大小,0代表不缓存,1代表缓存,使用系统默认设置的缓存区大小,大于1代表缓存大小。 
    打开方式:如下表

打开方式说明
‘r’只读的方式打开文件,若文件不存在,则产生异常
‘r+’以读写的方式方式打开文件,不删除原内容,若文件不存在,产生异常
‘w’只写的方式打开文件,删除原内容,无文件则创建
‘w+’读写的方式发开文件,删除原内容,无文件则创建
‘a’以追加的方式打开一个文件,不删除原内容,在文件末尾追加数据,无文件则创建
‘a+’以读写的方式打开文件,不删除原内容,在末尾写数据,无文件则创建
‘rb’同’r’,打开二进制文件
‘rb+’同’r+’,打开二进制文件
‘wb’同’w’,打开二进制文件
‘wb+’同’w+’,打开二进制文件
‘ab’同’a’,打开二进制文件
‘ab+’同’a+’,打开二进制文件

  • 普通文件的读写 
    读取: 
    read([num]) 
    若num不写时,读取整个文件的内容,num>0时读取num大小字节的数 
    readline():读取文件的一行 
    readlines():读取文件的每一行 
    例如:

(1).使用read()
!/bin/python
f=open('file.txtx','r')
s=f.read()
f.close()
print(s)
(2).使用readline读取一行读完整个文件
!/bin/python
f=open('file.txtx','r')
whil True:           //读完整个文件
    s=f.readline()    //读取一行
    if s=='':
        break
    print s
f.close
(3).使用readlines()读取文件的每一行,读完整个文件
!/bin/python
f=open('file.txtx','r')
s=f.readlines()        //读取后形成一个元组for line in s:
    print line,
f.close()

写入: 
write(str)


  • 二进制文件的读取和写入 
    写去: 
    对于二进制文件,是无法将数字,bool类型的数据写入到二进制文件中。 
    (1).使用struct模块中的pack()方法将数字和bool型转化为字节串,然后使用write方法写入到二进制文件中。 
    方法:pack(‘格式传’,格式对象) 
    (2).使用pickle模块中的dump方法直接将对象转化为字节串并写入到二进制文件中。 
    方法:dump(格式obj,f) 
    例如:

(1).使用struct模块
 !/bin/pythonimport strcut
f=open('file.bit','wb')
n=100w=Truex=392.0
str=struct.pack('if?',b,x,w)
f.write(str)
f.close()
(2).使用pickle模块
!/bin/pythonimport pickle
f=open('file.bit','wb')
n=100w=Truex=392.0
pickle.dump(n,f)
pickle.dump(w,f)
pickle.dump(x,f)
f.close()

读取: 
二进制文件的读取就是写入的逆过程 
(1).读取字节串,使用函数将其还原成数据,使用struct模块中的unpack()方法,返回一个元组 
方法:unpack(格式传,字节表)

!/bin/pythonimport 
structf=open('file.bit','rb')
str=f.read(3)
tu=struct.unpack('if?',str)    //返回一个元组print tu
f.close()

(2).使用pickle模块中load方法直接读取并还原成原有数据,返回还原后的对象 
方法:load(f)

!/bin/python
import pickle
f=open('file.bit','rb')
n=pickle.load(f)      #读出文件的数据个数
while i<n:
    x=pickle.load(f)
    print x
    i++
f.close()
  • 文件对象的|常用方法

方法名说明
flush()把缓存区的内容写入文件
close()把缓存取得内容写入文件,并关闭文件释放对象
seek(offset[,whence])文件指针移动
tell()返回文件指针当前位置

  • 常用的文件操作函数

对于文件的操作,python提供了os模块和os.path模块的函数 
(1).os模块

函数名说明
access(path)根据mode指定的权限访问文件
chmod()修改文件的访问权限
remove(path)删除path指定的文件
rename(src,dst)重命名
stat(path)返回指定文件的属性
fstat(path)返回打开文件的所有属性
listpath(path)返回path目录下的文件和目录

(2).os.path模块

函数名说明
abspath(path)返回path的绝对路径
dirname(path)返回目录的路径
exists(path)文件是否存在
getsize(file_name)返回文件的大小
isabs(path)是否为绝对路径
isdir(path)是否为目录
isfile(path)是否为文件
splitext(p)从路径中分割出扩展名
splitdrive(p)从路径中分割出驱动器的名称
walk(path)遍历目录数

目录

  • 目录的创建 
    (1).创建单个目录 
    方法:mkdir(path) 
    (2).创建多级目录 
    方法:makedirs(path1/path2/….)

  • 目录的删除 
    (1).删除一个目录 
    方法:rmdir(path) 
    (2).删除多级目录 
    方法:removedirs(path1/path2/….)

  • 目录的遍历 
    对于目录的遍历,在上述文件的操作方法中有一个listdir(path)方法,此方法只能列出path目录下的目录和文件,但是不能列出子目录下的文件和目录。 
    (1).使用listdir函数进行递归

!/bin/pythonimport osdef dir_view(path):
    list_dir=os.listdir(path)    for dir in list_dir:
        sub_path=os.path.join(path,dir)    #获取完整路径
        if os.path.isdir(sub_path):
            dir_view(path)

(2).使用os模块的walk方法,返回一个元组

!/bin/pythonimport osdef view_dir(path):
    list_dir=os.walk(path)     #返回一个元组,包括3个元素,所有路径名,所有目录列表,文件列表
    for root,dirs,files in list_dir:        
        for d in dirs:            
             print os.path.join(root,d)  #获取完整路径
        for f ini files:            
           print os.path.join(root,f)   #获取文件完整路径

python对于文件的操作比较简单,不像c那样比较复杂,对于同一个操作有几个不同的函数,例如对于文件的打开,C语言中有open函数,fopen函数等。


[Python]学习基础篇:文件和目录

标签:python中文件的那点事

原文地址:http://blog.51cto.com/lnsane784/2057037

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!