首页 > 代码库 > python路6__code,fileoperator

python路6__code,fileoperator

1,文件编码

python默认编码,python2默认为ascii,python3默认为utf-8所以说,python3默认支持中文。

>>> import sys
>>> sys.getdefaultencoding()  #显示python默认编码
utf-82,



2,文件操作通过指针的移动在读取文件,文件打开,指针指向文件开头,文件读完,指针指向文件末尾,指针不会自动回到文件开头,所以说,文件只能读一遍,如果想想再一次从头读取文件,就需要手动将指针指向文件开头(1)只读

>>> f = open(1.txt,r)
>>> data =http://www.mamicode.com/ f.read()            
>>> data2 = f.read()        #疑问:data2有数据吗?
>>> f.close()
>>> print (data)
1
2
3
4
5
6
7
8
9
人民的民义

>>> print (data2)        #data2为空

>>>

(2)只写,如果文件已存在,就覆盖

>>> f = open(1.txt,w)
>>> f.write(洞房花烛夜\n)
6
>>> f.write(进班题名时\n)
6
>>> f.close()
>>>

(3)追加,只能在文件末尾追加,不能读

>>> 
>>> f = open(1.txt,a)
>>> f.write(洞房花烛夜\n)
6
>>> f.write(进班题名时\n)
6
>>> f.close()
>>>

(4)文件的方法f.readline():每次读取文件的一行内容

r+ 读写,可读可追加
w+  写读,先创建一个文件,在写入(没太多用)
a+   追加读
rb   二进制格式读取文件,没有encoding参数,使用场景:pyython3中网络传输只能用二进制,视频文件都是二进制的

wb   二进制格式写,f.write(‘hello binary\n‘.encode())  写时需要str--->bytes,装换

比如:vim 是将文件先全部加载到内存,再进行修改,所以vim读取大文件时要等很久,修改完后再写入硬盘 这种情况下不需要创建新的文件,所以vim适合读小文件

(5) with:为了避免打开文件爱你后忘记关闭,可以通过管理上下文,当with代码臧星完后,内部自动关闭文件释放资源

#打开一个文件
>>> with open(1.txt,r) as f1:
...     for line in f1:
...             print (line)
... 
源于纯净

归于健康
#同时打开多个文件
>>> with open(1.txt,r) as f1,...     open(2.txt,r) as f2:
...             for line in f1:
...                     print (line)
...             for line in f2:
...                     print (line)
... 
源于纯净

归于健康
a

b

c

d

e

f

g

>>>

(6)实例:不打印文件第三行i:这个方法比较low,f.readlines():把文件的每一行作为一个元素,全部存入一个列表,这个readlines方法一次性把文件全部读入到内存中,只适合小文件

f = open(1.txt,r)
for index,line in enumerate(f.readlines()):
    if index == 2:
        print (--------我是分割线---------)
        continue
    print (index,line.strip())
f.close()
运行结果:

root@pythonserver:/python_shell# python3 code_fileoperator.py
0 洞房花烛夜
1 进班题名时
--------我是分割线---------
3 进班题名时

ii:推荐使用这个方法,占用内存少,高效
f = open(1.txt,r)
Count = 1
for line in f:    #此时,f是一个迭代器,文件一行一行的读入内存,内存中同时载入文件中的一
        #行,读取下一行到内存是,覆盖上一行
    if Count ==3:
        print (----------我是分割线-----------)
        Count +=1
        continue
    print (line.strip())
    Count +=1
f.close()
执行结果:

oot@pythonserver:/python_shell# python3 code_fileoperator.py
洞房花烛夜
进班题名时
----------我是分割线-----------
进班题名时

 


python路6__code,fileoperator