美文网首页
文件操作

文件操作

作者: 墨凌风起 | 来源:发表于2020-07-11 16:28 被阅读0次

    -- coding:utf-8 --

    import sys
    import os

    python os模块提供了一个统一饿操作系统接口函数(针对文件)
    os模块:是python获取文件的相关参数(路径,文件名称,文件大小,修改时间。。)
    os不参与文件的读写
    import os
    
    #1.查看文件路径、名称
    '''
    查看当前文件的绝对路径
    os.path.realpath(文件对象) 返回指定文件的绝对访问路径地址
    '''
    absolutePath = os.path.realpath(__file__) #__file__ 为python内置关键对象,专门获取当前文件对象的引用
    print('当前文件绝对路径:{0}'.format(absolutePath))
    
    '''
    查看当前文件所在目录的绝对路径地址
    函数:os.path.dirname(文件绝对路径)返回指定文件所在目录的绝对路径
    '''
    absuotePath1 = os.path.dirname(absolutePath)
    print('当前文件目录:{0}'.format(absuotePath1))
    
    #2.查看文件路径,文件名称
    '''
    查看文件名称
    函数:os.path.basename(文件绝对路径)
    '''
    print('当前文件的名称:{0}'.format(os.path.basename(absolutePath)))
    '''
    查看当前工程文件夹的绝对路径
    函数:os,getcwd()
    '''
    print('当前工程文件夹:{0}'.format(os.getcwd))
    
    '''
    查看当前文件大小
    函数:os.path.getsize(文件绝对路径) 返回大小,单位字节
    '''
    print('当前文件的大小为:{0}'.format(os.path.getsize(absolutePath)))
    
    #3.获取文件的创建,修改,最后访问时间
    #查看文件创建时间 os.path.getctime(文件绝对路径) 返回时间戳
    print('当前文件创建时间:{0}'.format(os.path.getctime(absolutePath)))
    #扩展,时间戳转时间格式
    import time
    def TimeStampToTime(timestamp):
        timeStruct = time.localtime(timestamp)
        return time.strftime('%Y-%m-%d %H:%M:%S',timeStruct)
    
    createTime = os.path.getctime(absolutePath)
    print('当前创建时间:{0}'.format(TimeStampToTime(createTime)))
    
    #查看当前文件的访问时间 os.path.getatime(文件的绝对路径) 返回时间戳
    accesstime = os.path.getatime(absolutePath)
    print("当前文件的访问时间为:{0}".format(TimeStampToTime(accesstime)))
    
    #查看当前文件的修改时间 os.path.getmtime(文件绝对路径)
    modifytime = os.path.getmtime(absolutePath)
    print('当前文件的修改时间:{0}'.format(TimeStampToTime(modifytime)))
    
    #4.判断是文件还是文件夹  os.path.isdir(文件对象)
    flag= os.path.isdir(absolutePath)
    if flag:
        print("是文件夹")
    else:
        print('是文件')
    
    #os.listdir(文件对象)返回列表对象,参数为空,返回当前公告称文件夹中所有文件名
    print('当前工程文件夹中的文件:{0}'.format(os.listdir))
    print('指定目录下文件名称:{0}'.format(os.listdir(absuotePath1)))
    print('+' *30)
    
    #获取文件夹信息
    #os.walk(文件地址)返回文件路径地址,文件夹集合,文件夹中的文件
    
    for root, dires, files in os.walk(absuotePath1):
        print('|-文件夹路径:%s'%root) #获取文件夹中所有目录及子目录名称
        print('| |-路径下的文件夹:{0}'.format(dires)) #获取当前文件夹中子文件夹名称
        print('| | |-文件夹中的文件:{0}'.format(files)) #获取当前文件夹中子文件夹中文件名
    print('+' *30)
    
    #文件读取 open(文件路径,读写模式[,encoding=编码格式])
    testPath = absuotePath1 + os.sep + 'test.txt'   #os.sep 文件目录分隔符/
    #绝对路径读取文件
    input = open(testPath,'r')
    #相对路径读取文件
    input1 = open('test.txt','r')
    #**open()在读取文件是,文件不存在则创建文件
    
    '''
    文件写入
    write(字符串)
    步骤:1获取程序与文件关联;2.写入数据;3.关闭文件对象
    '''
    import io
    fileDir = os.path.join(os.getcwd(),'createDir')
    input2 = io.open(fileDir + os.sep + "write.txt",'wb+')
    input2.write('中文∫')
    input2.write('haohaoxuexi tiantianxiangshang'.encode('utf-8'))
    input2.close()
    print('写入完毕')
    
    '''
    使用with,很好的处理上下文环境与异常情况,自动释放对象内存
    方式:with open(文件路径,读写模式) as 文件对象
    '''
    with open(fileDir + os.sep + "write2.txt",'w') as fp:
        fp.write("我在学习python\n")
    
    '''
    文件读取
    read()函数实现向关联文件读取数据
    步骤:1.获取程序与文件关联;2.读取并输出数据
    '''
    with open(fileDir + os.sep + 'read.txt','r') as fp:
        content = fp.read()
        print('读取的文件内容 = %s'%content)
    
    '''
    二进制文件的读写操作
    实现图片的复制
    
    #写入
    with open(fileDir + os.sep + 'logog.png','w') as fp:
        fp.write(ontent)
    
    #写入
    with open(fileDir + os.sep + 'logog.png','r') as fp:
        fp.read()
    '''
    
    '''
    ----------------------------------------------------------------------
    Json数据
    对象以{开始,}结束;
    数组用[]
    
    import json
    json.dumps() :完成数据对象json格式化操作,返回json串对象
    json.loads() :完成json数据的反序列化,返回一个原始对象
    python序列化编码转换为json对应表
    python : dict   list,tuple  str     int,float   True    False   None
    Json   :  object    array   string  number      true    false   null
    
    '''
    
    import json
    data = {'pid':'p001','pname':'测试商品名称','price':229}
    strJson = json.dumps(data,ensure_ascii = False) #ensure_ascii = False 防止中文数据乱码
    print('data原始数据:{0}'.format(data))
    print('json转换数据:{0}'.format(strJson))
    
    obj = json.loads(strJson)
    print('obj->{0}'.format(type(obj)))
    print(obj)
    
    '''
    json.dump(obj,file) :json 写入文件
    json.load(file):文件中读取json
    '''
    with open(fileDir + os.sep + 'data.json','w') as fp:
        json.dump(data,fp)
        print('json文件写入文件成功')
        pass
    
    '''
    ----------------------------------------------------------------------
    CSV格式文件存储
    CSV:Comma-Separated-Values 字符分割值,因为分割值可以不为逗号,其文本以纯文本形式存储表格数据(数字和文本)
    CSV文件由任意数目的文件组成,记录间以某种换行符分隔
    每条记录由字段组成,字段间的分隔符是其他字符或字符串,最常见的是逗号或制表符,
    CSV 数据文件常用于数据统计,数据分析过程中的数据存储
    import csv
    reader(.....)读取csv数据
    writer(.....)写入csv数据
    DictReader(.....)读取CSV数据转换成Dict类型
    DictWriter(.....)读取字典数据写入csv文件
    '''
    
    #csv.weiter:(writerow单行写入,writerows多行数据写入)
    import csv
    colums = ['姓名','年龄','电话']
    data = [('测试人员1',18,'1362344'),('测试人员2',20,'145232'),('测试人员3',22,'14323')]
    with open(fileDir + os.sep + 'csvfile.csv','wb') as csvfile:
        writer = csv.writer(csvfile) #获取writer写入对象
        writer.writerow(colums) #写入数据标题,单行数据
        writer.writerows(data)  #写入多行数据
    
    with open(fileDir + os.sep + 'csvfile.csv','r') as csvFile:
        reader = csv.reader(csvFile)
        for line in reader:
            print(line)
    
    
    

    相关文章

      网友评论

          本文标题:文件操作

          本文链接:https://www.haomeiwen.com/subject/msyicktx.html