zoukankan      html  css  js  c++  java
  • python 文件常用操作

    1.打开文件

      open()打开文件并返回文件对象,参数很多,一般用前两个,open(file,mode)。file可以是文件名或者文件目录下的文件名,mode为打开的方式,可以是只读、写入、追加写入、可读可写等等。

      打开某个文件,需要知道该文件的目录,或者该文件就在当前的工作目录下。

    (1)包含目录的文件名(不修改当前工作目录)

    >>> f=open('E:/python/record.txt')  #或者f=open(r'E:python
    ecord.txt')
    #或者f=open('E:\python\record.txt')
    >>> f.read()

    (2)文件名(修改当前的工作目录)

    import os              #插入os模块
    os.getcwd()            #查询当前工作目录
    os.chdir('E:python')  #更改当前工作目录
    os.getcwd()            #查询当前工作目录,发现修改成功
    f=open('record.txt')   #打开文件返回赋值到f
    f.read()               #读取文件

    2.文件读取和定位(基于文件对象的方法)

      文件是基于定位读取的。

      read():开始读取时没有设置参数,则从当前定位到末尾全部读取出来。

      readline():读取当前指针位置向后的该行。

      tell():当前文件指针的位置。

      seek(offset,from):移动指针,从from处向后移动offset个字节,from取值0(起始)或1(当前)或2(末尾)。返回指针所在位置。

      文件读取的指针不会自动归位,上面所有的操作具有连续性。每次读取时需要重新定位。

    #record.txt文件内容为411
    f=open(r'e:python
    ecord.txt)
    f.read()           #‘411’
    f.tell()           #3
    f.read()           #''
    f.seek(1,0)        #1
    f.read()           #'11'
    f.seek(0,0)        #0
    for each in f:
        print(each)    #411

    3.文件写入

      写入需要在打开文件时进行设置为'w'(覆盖)或'a'(末尾添加)。若用别的模式打开,需要关闭后再开,不然会出错。

      对象方法有write(str)writelines(seq)

    f.close()                     #接2继续
    f=open('record.txt','w+')     #写读模式打开
    f.write('1225')               #返回4
    f.seek(0,0)                   #写入后指针在末尾,读取前重新归零
    f.read()                      #'1225'

    4.OS模块

      该模块用于访问系统文件。

    import os
    os.getcwd()     #获取当前工作目录
    os.chdir(‘e:\python\’)  #更改当前工作目录为E:phthon
    os.listdir()    #列出当前目录下的文件和子目录
    os.mkdir('test')   #在当前目录下创建新文件夹test
    os.makedirs(r'123')  #创建多层目录
    os.remove('record.txt') #删除文件
    os.removedirs(r'123')  #删除多层文件夹
    os.rename('record.txt','r.txt') #文件或文件夹重命名
    os.system('calc')  #调用计算器
    walk(top)用于遍历所有的子文件和文件夹,返回的是元组(路径,文件夹,文件名)
     os.chdir(r'e:/')                                  
     for i in os.walk('python'):
        print(i)
    #('python', ['s'], ['1.gif', '1.jpg', '27.py', '28.py', 'p103.py', 'p14_1.py', 'p15.py', 'record.txt'])
    ('python\s', [], [])

    os模块中的path,可以针对的路径的操作

    os.path.basename(r'a
    ecord.txt')  #'record.txt'  得到路径中的文件名
    os.path.dirname(r'a
    ecord.txt')    #'a\b'  得到路径中的路径
    
    os.path.join(r'a	est','record.txt')  #'a\b\test\record.txt'
    os.path.split(r'a
    ecord.txt')         #('a\b', 'record.txt')
    os.path.splitext(r'a
    ecord.txt')    #('a\b\record', '.txt')

      getatime()获取文件访问时间,getctime()获取文件创建时间,getmtime()获取文件修改时间

      time模块可以对时间进行换算

    os.chdir('e:/python/')
    print('record,txt 被修改的时间是:',time.strftime('%d %b %Y  %H:%M:%S',time.localtime(os.path.getmtime('record.txt'))))

    #record,txt 被修改的时间是: 23 Jan 2018  08:43:53

    5.pickle模块

      pickle的功能就是把你上次计算得到的数据保存起来,当你需要使用这些数据时,直接通过reload把数据恢复了就行。这样不用重复计算,也不用转换数据格式。

    import pickle
    mlist=[123,3.14,'欢欢欢',['another list']]
    pfile=open('e:/python/list.pkl','wb')            #open可新建文件
    pickle.dump (mlist,pfile)                        #将列表保存到文件中
    pfile.close()
    import pickle
    pfile=open('e:/python/list.pkl','rb')     #打开读取文件
    mlist=pickle.load(pfile)                  #载入pickle文件
    print (mlist)

    #[123, 3.14, '欢欢欢', ['another list']]

     读取列表                

  • 相关阅读:
    poj 1584
    poj 1113 & poj 2187
    pku 1321 棋盘问题
    poj 1408
    pku 2251 Dungeon Master
    sdut oj 2218 Give Me an E
    Android工程 单元测试
    Android Timer编写方式
    去除工程的.svn隐藏文件夹
    Android 绑定远程服务出现 Not Allowed to bind service
  • 原文地址:https://www.cnblogs.com/minyshi/p/8331370.html
Copyright © 2011-2022 走看看