python 中有关文件处理

Python的文件处理

打开文件f = open (“path”,”mode”)

  • r 模式
    以读的方式打开,定位到文件开头 , 默认的 mode。文件不存在直接报错,文件只能读取,不能写入。
  • r+模式
    以读写的方式打开,定位文件开头 , 可以写入内容到文件
  • w 模式
    以写的方式打开,打开文件的时候会清空文件的内容,并且不能读
  • w+模式
    以读写的方式打开,定位到文件头,并且打开文件的时候也会清空文件的内容
  • a模式
    以写的方式打开,定位到文件的末尾,是一个追加的操作 , 但并不允许读
  • a+模式
    以读写的方式打开,定位到文件的末尾,追加的方式。

注:在使用以上 mode 打开文件的时候,如果增加了b 模式,表示以二进制方式打开

读取文件

  • f. readline()
    其实他就是用f.next方法实现的
    f = file(“feitian.txt”,”r”)
    只获得了文件的句柄
  • f.readline()
    一行一行的读,每执行一次就读取一行
  • f.read()
    以字符串的形式,一次性读
  • f.readlines()
    是以列表的形式读出来
    lala = file("accounts.txt","r")
    #打开文件
    for line  in lala.readlines():
    user, passwd = line.strip(‘\n‘).split()
    print user,passwd

    关闭文件

  • f.close
    关闭文件

    将内存中文件写入文件中

    关闭文件,会将内存的内容写入文件中(内容一般不超过1024个字符就存在内存中)

  • f.flush()
    会将内存中的文件内容写入到文件中。

    写入文件内容

    f =file(“feitian.txt”,’a’)
    f.write(‘\nsecond line’)
    一般不会换行,需要手动换行

    显示文件的字符集

  • print f.encoding
    如果结果为None,就是以ascall码的形式。
    默认是ascall如果要以其他的形式字符编码存放,则需要用下面的语句写入文件
    f.write(u’你是狗’.encode(‘utf-8’))

    测试是不是一个终端

    在Linux中打开一个终端其实就是创建一个tty文件

    查看name的模式

  • f.mode()
    查看file的模式
    ###查看文件的name
  • f.name()

    f.next()

    一个迭代方法,和readline差不多,不过他读到结尾的时候会报一个错误

    f.seek()

    注意:这里可以分析日志,每次只从上次处理的地方开始分析
    f.seek(offset[,whence]),函数,offset表示移动多少字节,大于零向右偏,小于零向左偏。whence为1的时候表示相对于当前位置移动的,当是2的时候从文件的末尾往后移动,但不一定所有的平台都支持;为0的时候表示从开头往后移动.

    f.tell()

    找到文件的指针的位置

    f.truncate(size)

    从开头截取到100的内容,他与文件的指针没有关系。其他的内容都会被删除。

    f.writelines()

    给文件中写入多行

    f.readlines()

    读一行打印一行
    for i in f.readlines()
    print i

    #显示文件中所有的行,但忽略以#号开头的行。
    f = open("world.md","a+")
    for i in f :
    i = i.strip()
    if not i.startswith("#"):
        print i
    f.close()
    # 下面为更高级一点的代码,在这段程序执行完毕之后自动关闭文件
    with open("world.md","a+") as f :
    for i in f :
        i = i.strip()
        if not i.startswith("#"):
            print i

注:私有方法在外部访问
在类的内部定义中,所有以双下划线开始的名字都被翻译成前面加单下划线和类名的形式。

class Secretive(object):
    def __inaccessible(self):
        print "Bet you can‘t see me ..."
    def accessible(self):
        print "The secret message is :"
        self.__inaccessible()
s = Secretive()
print Secretive._Secretive__inaccessible
s._Secretive__inaccessible()
<unbound method Secretive.__inaccessible>
Bet you can‘t see me ...
#检查继承
isubclass()
检查一个对象是否为一个类的实例
isinstance()


这里在写一个继承的例子,在子类中重写了构造方法时

#将类都变成新式类,不管是经典还是新式,都算新式类
__metaclass__ =  type
class Bird:
    def __init__(self):
        self.hungry = True
    def eat(self):
        if  self.hungry:
            print "feitian...."
            self.hungry = False
        else:
            print "No.thinks"
class BirdSing(Bird):
    def __init__(self):
        super(BirdSing,self).__init__()
       # Bird.__init__(self)
        self.sound = ‘squawk‘
    def sing(self):
        print self.sound
s =  BirdSing()
s.sing()
s.eat()
s .eat()

基本的序列和映射规则
序列和映射是对象的集合

  • __len___(self):
  • __getitem__(self,key):
  • __setitem__(self,key,value):
  • __delitem__(slef,key):
  • __str__(self)
    把一个类的实例变成str。
    默认在找到,设置和删除的时候会调用相应的构造方法
    子类化列表,字典和字符串
    class CounterList(list):
    def __init__(self,*args):
        super(CounterList, self).__init__(*args)
        self.counter = 0
    
    def __getitem__(self, index):
        self.counter += 1
        return super(CounterList, self).__getitem__(index)
    c1 = CounterList(range(10))
    print c1
    c1.reverse()
    print c1
    del c1[3:6]
    print c1
    print len(c1)
    c1[4]+c1[2]
    print c1.counter
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

    #有关try except异常:

    try:
    print ‘try...‘
    r = 10 / 0
    print ‘result:‘, r
    except ZeroDivisionError, e:
    print ‘except:‘, e
    finally:
    print ‘finally...‘
    print ‘END‘
    except 语句跟着两个东西,前面是异常的类型,后面的是 异常对象,包含了一些异常信息
    异常继承
    http://blog.csdn.net/dragonfli_lee/article/details/52350793
    http://www.cnblogs.com/Lival/p/6203111.html
    class MyError(Exception):
    def __init__(self, value):
        self.value = value
    def __str__(self):
        return repr(self.value)
    Python定义了__str__() 和__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员
    try:
    raise MyError(2*2)
    except MyError as e:
    print ‘My exception occurred, value:‘, e.value
    ##另一个代码
    a=10
    b=0
    try:
    c=a/b
    print c
    except ZeroDivisionError,e:
    print e.message
    print "done"
    #处理一组异常,指的是输入或者输出两组和IOError这个异常类型有关
    a=10
    b=0
    try:
    c = b/ a
    print c
    except (IOError ,ZeroDivisionError),x:
    print x
    else:
    print "no error"
    print "done"
    #有关try finally异常
    无论异常是否发生,在程序结束前,finally中的语句都会被执行。

    #Python中的有关拦截的东西

  • __getattribute__(self,name)
    #当特性name被访问时自动被调用
  • __getattr__(self,name)
    #当name被访问且对象没有响应的特性时,自动被调用
  • __setattr__(self,name,value)
    #当试图给name赋值是会被自定调用
  • __delatter__(self,name)
    #试图删除特性name时被调用
class Rectangle(object):
    def lala(self):
        self.width = width
    def __setattr__(self,width, value):
        print "想改,不存在的"
    def __delattr__(self, width):
        print "想删除,也不存在"
    def __getattr__(self,lalala):
        print "你有这个属性吗"
    def __getattribute__(self,name):
        print "想看知道也不存在的"
feitian = Rectangle()
feitian.lala
feitian.width = 1
del feitian.width
feitian.lalala
想看知道也不存在的
想改,不存在的
想删除,也不存在
想看知道也不存在的

Python中的递归生成器

def flatten(nested):
    try:
        try:nested + ‘‘
        except TypeError:pass
        else :
            raise  TypeError
        for sublist in nested:
            for element in  flatten(sublist):
                yield element
    except TypeError:
        yield nested
t =  list(flatten([‘1‘,[‘bar‘,[‘baz‘]]]))
print  t

原文地址:http://blog.51cto.com/13132323/2134807

时间: 2024-11-05 22:41:44

python 中有关文件处理的相关文章

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

创建文件:1) os.mknod("test.txt") 创建空文件2) open("test.txt",w) 直接打开一个文件,如果文件不存在则创建文件 创建目录:os.mkdir("file") 创建目录 创建多层新目录:def mkdirs(path): # 去除首位空格 path=path.strip() # 去除尾部 \ 符号 path=path.rstrip("\\") # 判断路径是否存在 # 存在 True #

python中关于文件的操作

今天让我们来一起学习一下python中关于文件的操作吧: 先看看以下如果打开文件: #open()打开文件的方法:r参数只能以读的方式打开文件,不能写 =(,,=)data=.read()(data)

解决 python 中读写文件的终极方案 UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0x9d in position 1270: illega

UnicodeDecodeError: 'gbk' codec can't decode byte 0x9d in position 1270: illegal multibyte sequence 上面是遇到的错误,本来想完成读文件,再写入另一文件的.但是在 fp.read() 时,一直遇到上面的错误,经过各种百度,google, 还有神奇的 stackoverflow 才知道是字符流的问题. 知道问题所在,还是没有解决,又苦苦搜索,终于在 stackoverflow 上找到灵感,可以把 op

【Python】解析Python中的文件操作

目录结构: contents structure [-] 简介 Python中的文件类型 内置函数的文件操作 open()函数 Mode 创建文本文件 读取文本文件 循环文件对象 关闭文件 With语句 os模块 fileinput模块 1.简介 在Python中无需引入额外的模块来进行文件操作,Python拥有内置的文件操作函数(除了内置文件操作函数,Python语言也提供了额外的文件操作模块,它们具有更加强大的功能). os模块提供了在操作系统上可移植的文件操作方法.如果只是想要读取和写入数

python中的文件操作open()函数

文件操作: 1.关于open 模式: r     以读方式打开,    f=open(r"C:\Users\shaopeng\Desktop\py_homework\DAY6\readme.txt","r") w     以写方式打开,  如果文件存在则会清洗掉原文件的内容,然后把写的东西写进新文件 f=open(r"C:\Users\shaopeng\Desktop\py_homework\DAY6\readme.txt","w&qu

python中使用文件的读取和简单正则使用(一)

p { margin-bottom: 0.25cm; line-height: 120% } 今天想写个程序合并文件的,以前一直觉得python的编码解码好烦,只要处理文件合并之类的都是用C# 写,但是最近用的是linux,也没有vs,就只能乖乖的用python 写了,早上看了下,也没有我想的负责,只能说以前太那啥了....好了,闲话少说,下面先简单介绍下文件读取操作吧. 首先说明的是我用的python2.7,python读取文件内容主要有下面几种常用方法:先来个测试,方面大家可以清晰了解每种方

Python中的文件和目录操作实现代码

对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数.重要的是,这些函数无论是在Unix.Windows还是Macintosh平台上,它们的使用方式是完全一致的. 本文将详细解释这些函数的使用方法.首先,我们介绍Python语言中类似于Windows系统的dir命令的列出文件功能,然后描述如何测试一个文件名对应的是一个标准文件.目录还是链接,以及提取文件大小和日期的方法.之后,我们还将介绍如何删除文

Python中读取文件输出时在头部输出\ufeff

问题出现: 在我测试python中的文本文件的读取与写入时,用到了字典对象来存储读出的数据. 1 std_data = dict() 2 with open(sys.argv[1], encoding='UTF-8') as fp: 3 alldata = fp.readlines() 4 for item in alldata: 5 no, name = item.rstrip('\n').split('.') 6 std_data[no] = name 7 print(std_data) 在

在Python中对文件和目录进行操作

文件与目录操作是编程语言中非常重要的功能,Python也对其提供了相应的API支持,这篇博文就是具体介绍它们的使用方法. 一.文件打开和关闭操作 对文件进行操作在Python中分为3个步骤,首先要打开文件,然后是对文件进行读写操作,最后需要关闭文件. 1.打开文件使用的是open()函数,它提供初始化输入.输出(I/O)操作的通用接口,成功打开文件后返回一个文件对象,打开失败则引发一个错误.打开文件的语法如下: file_object = open(file_name,access_mode [