python文件操作

python的read(),readline(),readlines()

这三个方法大家应该很熟悉了,都是python操作文件的常用方式。他们的区别在于

read(),默认读取全部文件。

readline(),默认按行读取

readlines(),按行读取,并把每行数据作为一个字符串加入一个列表中。

def ReadFile():
    with open("foo.txt",mode="r",encoding="utf-8") as f:
        txt = f.read()
        print(txt)

def ReadlineFile():
    with open("foo.txt",mode="r",encoding="utf-8") as f:
        i = 1
        while True:
            i += 1
            txt = f.readline()
            print(i,txt)
            if not txt:
                print("读完了")
                break

def ReadlinesFile():
    with open("foo.txt",mode="r",encoding="utf-8") as f:
        txt = f.readlines()
        print(txt)


if __name__ == '__main__':
    ReadFile()
    ReadlineFile()
    ReadlinesFile()


fasdfasdfjdsahjk
adshfkjalksdfl;adskf
sdakfhjalksdjf
fkjalskdmclak
sadkfnjlkasndkl
asdbfnkjasnda
sdfkjlnasljdnlsank;fd
sdjnlkasn ;akrpi;nak;l
fjkbgiherkbfdljsahfoajk
ehjfgoukjabdsjv,kbhalsd
jfhhgoueihbrvkfanvb sdkfjlva
fdjvdbfkvabheoslfjnkdbfv
fbvkelairlvkbkadn;lkna,jdfk.lkmcv
fbvkuierknvbbdfjjvmnkajs
bifvkubjfjm,nvkjsbkhfbvnjosdlnm
erolivnkdnmbnljvakndhfbvoajlnxb dkjlfhvld
dfgbouerjbvknmfsbnv,ns vsekrhbjpelbnvkdsfnvjsnkbvf
;eiroinfdfb kvsjnfvnoshdfjkvnfkhbvknv,ns
fveosljbvnsnvkhsboreptinb vndv
roenspjldfbvnmsdngpoerkblds
eoghpoenbasjnpheopr[fd'v
ofdhvpgerbvkdb.nvbihoueshvjdbhkvbsodflnvhjsbnfodjhbvhfjbsbfnvbj,fsbsjnbvoehripvlbnkhsbdo;vhsevouhrtouhbvksdfbn,,nfbge
eourtbkjsbnfbvol;wehpifhbeisbfnbvlq;p'erhvpnfs
'ejbvewjsbfbvoqeipjgpiobvhjsbvklajndpvhelvnkjfbksnkep;fjvnbksl;v
edvoels;dnb vlsnbairopijvokdbnva bckvb[ie'f

1 fasdfasdfjdsahjk

2 adshfkjalksdfl;adskf

3 sdakfhjalksdjf

4 fkjalskdmclak

5 sadkfnjlkasndkl

6 asdbfnkjasnda

7 sdfkjlnasljdnlsank;fd

8 sdjnlkasn ;akrpi;nak;l

9 fjkbgiherkbfdljsahfoajk

10 ehjfgoukjabdsjv,kbhalsd

11 jfhhgoueihbrvkfanvb sdkfjlva

12 fdjvdbfkvabheoslfjnkdbfv

13 fbvkelairlvkbkadn;lkna,jdfk.lkmcv

14 fbvkuierknvbbdfjjvmnkajs

15 bifvkubjfjm,nvkjsbkhfbvnjosdlnm

16 erolivnkdnmbnljvakndhfbvoajlnxb dkjlfhvld

17 dfgbouerjbvknmfsbnv,ns vsekrhbjpelbnvkdsfnvjsnkbvf

18 ;eiroinfdfb kvsjnfvnoshdfjkvnfkhbvknv,ns

19 fveosljbvnsnvkhsboreptinb vndv

20 roenspjldfbvnmsdngpoerkblds

21 eoghpoenbasjnpheopr[fd'v

22 ofdhvpgerbvkdb.nvbihoueshvjdbhkvbsodflnvhjsbnfodjhbvhfjbsbfnvbj,fsbsjnbvoehripvlbnkhsbdo;vhsevouhrtouhbvksdfbn,,nfbge

23 eourtbkjsbnfbvol;wehpifhbeisbfnbvlq;p'erhvpnfs

24 'ejbvewjsbfbvoqeipjgpiobvhjsbvklajndpvhelvnkjfbksnkep;fjvnbksl;v

25 edvoels;dnb vlsnbairopijvokdbnva bckvb[ie'f

26 
读完了
['fasdfasdfjdsahjk\n', 'adshfkjalksdfl;adskf\n', 'sdakfhjalksdjf\n', 'fkjalskdmclak\n', 'sadkfnjlkasndkl\n', 'asdbfnkjasnda\n', 'sdfkjlnasljdnlsank;fd\n', 'sdjnlkasn ;akrpi;nak;l\n', 'fjkbgiherkbfdljsahfoajk\n', 'ehjfgoukjabdsjv,kbhalsd\n', 'jfhhgoueihbrvkfanvb sdkfjlva\n', 'fdjvdbfkvabheoslfjnkdbfv\n', 'fbvkelairlvkbkadn;lkna,jdfk.lkmcv\n', 'fbvkuierknvbbdfjjvmnkajs\n', 'bifvkubjfjm,nvkjsbkhfbvnjosdlnm\n', 'erolivnkdnmbnljvakndhfbvoajlnxb dkjlfhvld\n', 'dfgbouerjbvknmfsbnv,ns vsekrhbjpelbnvkdsfnvjsnkbvf\n', ';eiroinfdfb kvsjnfvnoshdfjkvnfkhbvknv,ns\n', 'fveosljbvnsnvkhsboreptinb vndv\n', 'roenspjldfbvnmsdngpoerkblds\n', "eoghpoenbasjnpheopr[fd'v\n", 'ofdhvpgerbvkdb.nvbihoueshvjdbhkvbsodflnvhjsbnfodjhbvhfjbsbfnvbj,fsbsjnbvoehripvlbnkhsbdo;vhsevouhrtouhbvksdfbn,,nfbge\n', "eourtbkjsbnfbvol;wehpifhbeisbfnbvlq;p'erhvpnfs\n", "'ejbvewjsbfbvoqeipjgpiobvhjsbvklajndpvhelvnkjfbksnkep;fjvnbksl;v\n", "edvoels;dnb vlsnbairopijvokdbnva bckvb[ie'f\n"]
read(),readline(),readlines()

 

python处理大文件(超过1G)

处理大文件时候可以设置偏移量,开启多个协程来同时处理文本。seek()方法可以设置偏移量问题。

  file.seek()方法格式:

    seek(offset,whence=0) 移动文件读取指针到制定位置

    offset:开始的偏移量,也就是代表需要移动偏移的字节数。

    whence: 给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头算起,1代表开始从当前位置开始算起,2代表从文件末尾开始算起。当有换行时,会被换行截断。  seek()无返回值,故值为None

def ReadFile():
    with open("foo.txt",mode="rb") as f:
        # f.seek(10,0)      #设置起读位置,0表示从头开始偏移10个。使用seek注意要使用rb来读取。
        # print(f.tell())   #获取起读位置的坐标

        # f.seek(11,1)       #1表示从上一次偏移量在便宜11个
        # print(f.tell())

        f.seek(-13,2)      #2表示从文本末尾开始算偏移量
        while True:
            txt = f.read(40)   #每次读1024字节
            print(txt.decode())

            if not txt:
                break
seek()

 

posted @ 2021-03-15 17:39  X小白的逆袭之旅  阅读(88)  评论(0编辑  收藏  举报