专栏首页python3python文件操作二

python文件操作二

1、常用函数:

  1. fileObject.read([size]) size为读取的长度,以byte为单位。如果不指定参数,表示一次性读取全部 内容,以字符串形式返回,并且每一行结尾会有一个"\n"符号。 代码示例1: with open("text.txt","r") as pf: content = pf.read() print content

结果: abcede 123 this is a test文件操作jfedcba

代码示例2:

with open("text.txt","r") as pf:
    content = pf.read(2)
    print content

结果: 读取:ab

  1. fileObject.readline( [size] ) 一行,如果给定了size,有可能返回的只是一行的一部分,以字符串的形式返 回,并且结尾会有一个换行符"\n"。读完一行,文件操作标记移动到下一行的 开头 列题1
with open("text.txt","r") as pf:
    content = pf.readline()
    print content

结果: 大学之道,在明明德,在亲民,在止于至善。 列题 1:

with open("text.txt","r") as pf:
    content = pf.readline(15)
    print content

结果: 大学之道,

  1. fileObject.readlines( [size] ) 把文件每一行作为一个list的一个成员,是一个字符串,并且结尾会一个换行符"\n",并返回这个list。这个函数的内部是通过循环调用readline()来实现的。如果指定了size参数,表示读取文件指定内容的长度,此时就有可能只能读取文件的一部分
with open("text.txt","r") as pf:
    content = pf.readlines()
    print content
    for line in content:
        print line

结果:

  1. fileObject.write( str ) 把str写到文件中,默认是不加换行符的,所以如果想换行的话,得手动加入换行符'
with open("test.txt","w") as pf:
    pf.write("我是最帮的!!\n学习文件写入操作")

结果: 我是最帮的!! 学习文件写入操作

  1. fileObject.writelines( seq ) 把seq(序列)的内容全部写到文件中(多行一次性写入)。也不会自动加入换行符 如:
content = "我是最帮的!!\n学习文件写入操作,加油!!!"
with open("test.txt","a") as pf:
    pf.writelines(content)

结果: 我是最帮的!! 学习文件写入操作我是最帮的!! 学习文件写入操作,加油!!!

  1. fileObject.close() File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。如果文件关闭后,还对文件进行操作就会产生ValueError错误,但如果不及时关闭文件,有可能产生句 柄泄露,丢失数据 #打开文件准备写文件
fp = open( "c:\\test.txt",'w')
print u"文件名:", fp.name
#关闭文件
fp.close()
print u"文件是否关闭:", fp.closed

结果: 文件名: test.txt 文件是否关闭: True

  1. fileObject.flush() 该函数是将缓冲区中的内容写入硬盘
  2. fileObject.tell() 返回文件操作标记的当前位置,以文件的开头为基准点
with open("test.txt","r") as pf:
    print u"当前文件操作标记位置为:", pf.tell()
    line = pf.readline()
    print u"读取一行后文件操作标记位置为:", pf.tell()

结果: 当前文件操作标记位置为: 0 读取一行后文件操作标记位置为: 23

  1. fileObject.seek( offset[, from ] ) tell()方法告诉你文件内的当前位置;换句话说,下一次的读写会发生在文件开头这么多字节之后。seek(offset [,from])这是一个文件定位函数,该方法改变当前文件的位置。 Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。如果from被设为0(默认值),这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将为参考位置。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。测试文件test.txt,内容如下:
with open("test.txt","r") as fp:
    str = fp.read(18)
    print u"读取的字符串是 : ", str
    # 查找当前位置
    position = fp.tell()
    print u"当前文件位置 : ", position
    # 把指针再次重新定位到文件开头
    position = fp.seek(0, 0)
    str = fp.read(18)
    print u"重新读取字符串 : ", str

结果: 读取的字符串是 : 我是最帮的! 当前文件位置 : 18 重新读取字符串 : 我是最帮的!

fileObject.truncate( [size] ) 把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。

with open("test.txt","r") as fp:
    print "Name of the file: ", fp.name
    line = fp.readline()
    print "Read Line: %s" % (line)
    print fp.tell()
    # Try to read file now
    remainingLine = fp.readline()
    print "Read Line: %s" % (remainingLine)
  • linecache 模块允许从任何文件里得到任何的行,并且使用缓存进行优化,常见的情况是从单 个文件读取多行。
  • linecache.getlines(filename) 从名为 filename 的文件中得到全部内容,输出为列表格式,以文件每行为列表中的一个元素, 并以 linenum-1 为元素在列表中的位置存储
  • linecache.getline(filename,lineno) 从名为 filename 的文件中得到第 lineno 行。这个函数从不会抛出一个异常–产生错误时它将 返回”(换行符将包含在找到的行里)。 如果文件没有找到,这个函数将会在 sys.path 搜索。
  • linecache.clearcache() 清除缓存,如果你不再需要先前从 getline() 中得到的行
  • linecache.checkcache(filename) 检查缓存的有效性。如果在缓存中的文件在硬盘上发生了变化,并且你需要更新版本,使用 这个函数,执行此函数会讲淘汰的内容删除。如果省略 filename,将检查缓存里的所有条目。
  • linecache.updatecache(filename) 更新文件名为 filename 的缓存。如果 filename 文件更新了,使用这个函数可以更新
  • linecache.getlines(filename) 返回的列表。如果出错,则返回空列表。
    1. 删除空行的方法
    fp = open(r'test.txt')
    aList = []
    for item in fp:
        if item.strip():
            aList.append(item)
    fp.close()
    fp = open(r'test2.txt', 'w')
    fp.writelines(aList)
def delblankline(infile, outfile):
    """ Delete blanklines of infile """
    infp = open(infile, "r")
    outfp = open(outfile, "w")
    lines = infp.readlines()
    for li in lines:
    if li=='\n': #不同操作系统下可能会有不同
    print u'空行'
    if li.split():
        outfp.write(li)
    infp.close()
    outfp.close()

if __name__ == "__main__":
delblankline("c:\\1.txt","c:\\2.txt")

列题: 数据文件:data.log 20160215 000148|0|collect info job start|success| 20160215000153|0|collect info job end|success|resultcode = 0000 20160216000120|0|collect info job start|success| 20160216000121|0|collect info job end|success|resultcode = 0000 20160217000139|0|collect info job start|success| 20160217000143|0|collect info job end|success|resultcode = 0000 数据分析需求: 每行内容需要生成以每行 首年月日为名称的文件, 文件内容写入|0|后的所有 行内容(也包括|0| )

算法分析: 遍历每一行,每行取头8个字母 新建文件,文件名为首8个字母,然后把第15字符后的所有字 符拷贝到文件中 关闭文件

fp =open("e:\\data.log")
for line in fp.readlines():
    filename = line[:14]
    content = line[14:]

    with open("e:\\"+filename+".txt","w") as fp2:
        fp2.write(content+"\n")

fp.close()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python 操作文件

     python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。

    py3study
  • python3基础:文件操作

    相对路径:顾名思义就是相对于当前文件的路径。网页中一般表示路径使用这个方法。 绝对路径:绝对路径就是主页上的文件或目录在硬盘上真正的路径。 比如 c:/ap...

    py3study
  • 文件的基本操作

        w  ---- 只写模式,不能调用read()进行读操作,如果打开一个已存在的文件,会先清空内容

    py3study
  • python3基础:文件操作

    相对路径:顾名思义就是相对于当前文件的路径。网页中一般表示路径使用这个方法。 绝对路径:绝对路径就是主页上的文件或目录在硬盘上真正的路径。 比如 c:/ap...

    py3study
  • OpenStack查看网络服务状态

    [root@controller ~]# systemctl status neutron-server.service neutron-linuxbridge...

    院长技术
  • 【视频】In Memory的内部结构和实现机制

    小编寄语 罗马不是一日建成的。新特性5分钟系列视频,带你循序渐进学习Oracle12.2的最新特性,相约成长的路上,不见不散! { 本期话题 } In ...

    数据和云
  • 【AIDL专栏】梅涛:深度视觉理解(附PPT)

    “人工智能前沿讲习班”(AIDL)由中国人工智能学会主办,旨在短时间内集中学习某一领域的基础理论、最新进展和落地方向,并促进产、学、研相关从业人员的相互交流。对...

    马上科普尚尚
  • 【手记】解决VS2017 git 拉取按钮灰色的问题

    若干仓库都是能推不能拉,下面显示当前分支不跟踪远程分支,后来在这里找到给分支建立跟踪的方法,又在这里找到在VS2017中敲git命令的方法,在此感谢上述博文的作...

    AhDung
  • 『金融数据结构』「3. 基于事件采样」

    在上贴〖从 Tick 到 Bar〗里,我们已经会从「异质」的 tick 数据采样出「同质」的 bar 数据。当数据太多时,传统 (非深度) 机器学习算法的表现会...

    用户5753894
  • https 加密、http2.0、keep-alive

    HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏...

    岚孩子

扫码关注云+社区

领取腾讯云代金券