为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
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/pythonf=open('file.txtx','r')s=f.read()f.close()print(s)(2).使用readline读取一行读完整个文件!/bin/pythonf=open('file.txtx','r')whil True:           //读完整个文件    s=f.readline()    //读取一行    if s=='':        break    print sf.close(3).使用readlines()读取文件的每一行,读完整个文件!/bin/pythonf=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 strcutf=open('file.bit','wb')n=100w=Truex=392.0str=struct.pack('if?',b,x,w)f.write(str)f.close()(2).使用pickle模块!/bin/pythonimport picklef=open('file.bit','wb')n=100w=Truex=392.0pickle.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 tuf.close()

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

!/bin/pythonimport picklef=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函数等。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消