博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件处理
阅读量:4565 次
发布时间:2019-06-08

本文共 2446 字,大约阅读时间需要 8 分钟。

 

1.文件打开

open 函数

我们使用 open() 函数打开文件。它需要两个参数,第一个参数是文件路径或文件名,第二个是文件的打开模式。模式通常是下面这样的:

"r",以只读模式打开,你只能读取文件但不能编辑/删除文件的任何内容

"w",以写入模式打开,如果文件存在将会删除里面的所有内容,然后打开这个文件进行写入
"a",以追加模式打开,写入到文件中的任何数据将自动添加到末尾

>>> fobj = open("sample.txt")>>> fobj
#打开文件后我们应该总是关闭文件。我们使用方法 close() 完成这个操作。fobj.close()

始终确保你显式关闭每个打开的文件,一旦它的工作完成你没有任何理由保持打开文件。因为程序能打开的文件数量是有上限的。如果你超出了这个限制,没有任何可靠的方法恢复,因此程序可能会崩溃。每个打开的文件关联的数据结构(文件描述符/句柄/文件锁...)都要消耗一些主存资源。因此如果许多打开的文件没用了你可以结束大量的内存浪费,并且文件打开时始终存在数据损坏或丢失的可能性。

 

2.文件读取

使用 read() 方法一次性读取整个文件。

>>> fibo=open("sample.txt")>>> fibo.read()'I love Python\nI love shiyanlou\n'>>> fibo.read()''#如果你再一次调用 read(),它会返回空字符串因为它已经读取完整个文件

read(size) 有一个可选的参数 size,用于指定字符串长度。如果没有指定 size 或者指定为负数,就会读取并返回整个文件。当文件大小为当前机器内存两倍时,就会产生问题。反之,会尽可能按比较大的 size 读取和返回数据。

 

readline() 能帮助你每次读取文件的一行。  readlines() 方法读取所有行到一个列表中。

>>> fibo=open("sample.txt")>>> fibo.readline()'I love Python\n'>>> fibo.readline()'I love shiyanlou\n'>>> fibo.readline()''>>> fibo.close()>>> fibo=open("sample.txt")['I love Python\n', 'I love shiyanlou\n']>>>

 3.文件写入

(1).拷贝文件

#! /usr/bin/python#coding=utf-8import sysif len(sys.argv) != 3 :    print ("入参个数有误, 例如 ./copyfile file1name file2name")    sys.exit(1)else :    f1 = open (sys.argv[1])    s = f1.read()    f1.close()    f2 = open (sys.argv[2],'w')    f2.write(s)    f2.close()    print ("复制成功!")

(2). 文本文件相关信息统计

#! /usr/bin/python#coding=utf-8import sysimport osdef parse_file(path):    """    分析文件,给出空格 制表符 行的相关信息    part: 要分析的文件路径    return 包含空格 制表符 行的 元祖    """    fd = open(path)    ftlines = fd.readlines()    fd.close()    i = 0    tabs = 0    spance = 0    for i,lines in enumerate(ftlines):        tabs += lines.count('\t')        spance += lines.count(' ')    return (spance,tabs,i+1)def main (path) :    '''    分析分析结果    path 文件路径    如果存在文件,返回true,不存在返回flase    '''    if os.path.exists (path) :        spance,tabs,lines = parse_file(path)        print ("空格{},制表符{},行{}".format(spance,tabs,lines))        return True    else :        print ("不存在文件:{}".format(path))        return False        if __name__ == '__main__':    if len(sys.argv) == 2 :        main (sys.argv[1])    else :        print ("入参个数不对")        sys.exit(-1)        sys.exit(0)

4.with 语句打开文件

在实际情况中,我们应该尝试使用 with 语句处理文件对象,它会在文件用完后会自动关闭,就算发生异常也没关系。它是 try-finally 块的简写:

>>> with open('sample.txt') as fobj:...     for line in fobj:...         print(line, end = '')... I love PythonI love shiyanlou

 

转载于:https://www.cnblogs.com/think-cl/p/9507616.html

你可能感兴趣的文章
快速傅立叶之二
查看>>
cetos 6.3 安装 apache+mysql+php
查看>>
js编写简单的贪吃蛇游戏
查看>>
2018/12/01 一个64位操作系统的实现 第四章 导入kernel.bin(4)
查看>>
如何在windows xp professional安装iis的解决方法
查看>>
抽象类和接口
查看>>
使用ASP.NET Atlas AutoComplete Behavior或AutoComplete Extender实现自动完成功能(下)
查看>>
golang 常见疑惑总结
查看>>
8大你不得不知的Android调试工具
查看>>
pc端元素拖拽
查看>>
Sublime Text3使用Package Control 报错There Are No Packages Available For Installation
查看>>
判断连通图是否有环(并查集)
查看>>
汽车之家面试题2016
查看>>
POJ-数据结构-优先队列模板
查看>>
【HAOI2006】旅行(并查集暴力)
查看>>
css实现文本超出部分省略号显示
查看>>
留言板
查看>>
vue-router组件状态刷新消失的问题
查看>>
Android UI开发第十四篇——可以移动的悬浮框
查看>>
java8的一些用法
查看>>