Python之文件操作

文件读写操作

 打开文件

     file =  open(fileName, mode),mode默认为"r"
   例如file = ope("test.txt", "r").以读的方式打开文件.文件操作完毕记得关闭.file.close()
   其中,mode可以有以下选择:
  • "r"     以读方式打开,只能读文件.如果文件不存在则会发生异常
  • "r+"   以读写方式打开,文件可读可写,可写到文件的任何位置
  • "w"    以写方式打开,只能写文件.如果文件不存在则创建;如果文件存在则清空再打开
  • "w+"  以读写方式打开,文件可读可写.如果文件不存在则创建;如果文件存在则清空再打开
  • "a"     以追加的方式打开只写文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾
  • "a+"   以追加的方式打开可读可写文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾
  • "rb"    以二进制读方式打开,只能读文件.如果文件不存在则会发生异常
  • "wb"   以二进制写方式打开,只能写文件.如果文件不存在则创建;如果文件存在则清空再打开
  • "rt"     以文本读方式打开,只能读文件.如果文件不存在则发生异常
  • "wt"    以文本写方式打开,只能写文件.如果文件不存在则创建;如果文件存在则清空再打开
  • "rb+"   以二进制读方式打开,可以读写文件.如果文件不存在则发生异常
  • "wb+"  以二进制写方式打开,可以读写文件.如果文件不存在,则创建文件;如果文件存在则清空再打开

    读文件

    文件test.txt的内容为:

<span style="font-size:14px;">11111111111-----aaaaaaaaa
22222222222-----bbbbbbbb
33333333333-----cccccccccc</span>

    read([size])          size为读取大小,单位为byte,不指定size的话则一次性读全部内容

f = open("test.txt")
print f.read()
f.close()
'''
11111111111-----aaaaaaaaa
22222222222-----bbbbbbbb
33333333333-----cccccccccc
'''

    readline([size])    按行读取,如果指定了size,可能只返回一行的一部分

f = open("test.txt")
print f.readline()
f.close()
'''
<p>11111111111-----aaaaaaaaa</p>'''

    readlines([size])   把文件的每一行作为list的一个元素,返回整个list

f = open("test.txt")
print f.readlines()
f.close()
'''
['11111111111-----aaaaaaaaa\n', '22222222222-----bbbbbbbb\n', '33333333333-----cccccccccc']
'''

    写文件

   fp.write(str)             把str写到文件中,write()并不会在str后加上一个换行符
   fp.writelines(seq)   把seq的内容全部写到文件中(多行一次性写入).这个函数也只是忠实地写入,不会在每行后面加上任何东西.

    清空文件内容

    truncate()

    仅当以r+,rb+,"w","wb","wb+"等以可写模式打开的文件才能执行该功能

文件和文件夹操作

    使用前先导入os模块.
  • 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()
  • 返回指定目录下的所有文件和目录名:os.listdir()
  • 函数用来删除一个文件:os.remove()
  • 删除多个目录:os.removedirs(r"/home/python")
  • 检验给出的路径是否是一个文件:os.path.isfile()
  • 检验给出的路径是否是一个目录:os.path.isdir()
  • 判断是否是绝对路径:os.path.isabs()
  • 检验给出的路径是否真地存:os.path.exists()
  • 返回一个路径的目录名和文件名:os.path.split() 
  • 分离扩展名:os.path.splitext()
  • 获取路径名:os.path.dirname()
  • 获取文件名:os.path.basename()
  • 重命名:os.rename(old, new)
  • 创建多级目录:os.makedirs(r"/home/python")
  • 创建单个目录:os.mkdir("test")
  • 获取文件属性:os.stat(file)
  • 修改文件权限与时间戳:os.chmod(file)
  • 获取文件大小:os.path.getsize(filename)
  • os.path.join(path1[, path2[, ...]])     将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
    练习:递归获取目录下所有文件名
def get_files(file_path):
    files = os.listdir(file_path)
    for file in files:
        file_full_dir = os.path.join(file_path, file)
        if os.path.isdir(file_full_dir):
            get_files(file_full_dir)
        else:
            print os.path.join(file_path, file_full_dir)
    很容易理解,对目录下所有文件和文件夹,如果是文件则输出,如果是文件夹递归查找.
    或者也可以用os.walk()来实现
def get_files(file_path):
    for fpathe, dirs, fs in os.walk(file_path):
        for f in fs:
            print os.path.join(fpathe, f)
返回的是一个三元tupple(dirpath, dirnames, filenames),
其中第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件.
dirpath是一个string,代表目录的路径,
dirnames是一个list,包含了dirpath下所有子目录的名字,
filenames是一个list,包含了非目录文件的名字.这些名字不包含路径信息,如果需要得到全路径,需要使用 os.path.join(dirpath, name).


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值