day①:文件操作

#模式

# 模式:
读 'r'
写[清空整个文件] 'w'
追加[文件需要存在] 'a'
读写 'r+'
二进制文件 'b' 'rb','wb','rb+'

#文件对象方法

file.close() # 关闭文件
file.fileno() # 返回文件的描述符
file.flush() # 刷新文件的内部缓冲区
file.isatty() # 判断file是否是一个类tty设备
file.next() # 返回文件的下一行,或在没有其他行时引发StopIteration异常
file.read(size=-1) # 从文件读取size个字节,当未给定size或给定负值的时候,读取剩余的所有字节,然后作为字符串返回
file.readline(size=-1) # 从文件中读取并返回一行(包括行结束符),或返回最大size个字符
file.readlines(sizhint=0) # 读取文件的所有行作为一个列表返回
file.xreadlines() # 用于迭代,可替换readlines()的一个更高效的方法
file.seek(off, whence=0) # 在文件中移动文件指针,从whence(0代表文件起始,1代表当前位置,2代表文件末尾)偏移off字节
file.tell() # 返回当前在文件中的位置
file.truncate(size=file.tell()) # 截取文件到最大size字节,默认为当前文件位置
file.write(str) # 向文件写入字符串
file.writelines(seq) # 向文件写入字符串序列seq;seq应该是一个返回字符串的可迭代对象

读文件

open()和file(),别名关系,随你喜欢用哪个,但是py3已经没有file()了!

read(),一次性读取文件的全部内容,可以指定read(size),每次最多读取size字节的内容

readline(),每次读取一行内容

readlines(),一次读取所有内容并按行返回列表

>>> f = open('/python/test.txt','r')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IOError: [Errno 2] No such file or directory:  '/python/test.txt'  #不存在会报错
>>> f = open('/shell/test.txt','r')   
>>> f.read()
'nimeide !!!!!!!!
'
>>> f.close()
>>> with open('/shell/test.txt','r') as f: #自动帮你close()
...      print f.read()
... 
nimeide !!!!!!!!
                             ^
>>> f=file('/shell/test.txt','r')
>>> for line in f.readlines():   
...     print (line.strip())     
... 
nimeide !!!!!!!!

写文件:

write

writelines,参数需为一个列表,将一个列表的每个元素都写入文件

>>> f=file('/shell/mytest.txt','w')
>>> f.write('This is first line
')
>>> f.write('second line
')
>>> f.close()

追加:

>>> f =file("/shell/mytest.txt","a")
>>> f.write("thrid line")
>>> f.close()

[root@monitor shell]# cat mytest.txt
This is first line
second line
thrid line[root@monitor shell]#

修改内容:

原文件:/shell/mytest.txt

[root@monitor shell]# cat mytest.txt
This is first line
second line
thrid line
fouth line
fifth line
nimeide line

>>> new_f = file('/shell/mynew_file_update.txt','w')
>>> f = file('/shell/mytest.txt','r') 
>>> for line in f:
...     if 'fifth' in line:
...         line=line.replace(line,'--my test fifth---
')
...     new_f.write(line)
... 
>>> f.close()
>>> new_f.close()

修改后:

[root@monitor shell]# cat mynew_file_update.txt
This is first line
second line
thrid line
fouth line
--my test fifth---
nimeide line

最后:

>>> import os
>>> os.rename('/shell/mynew_file_update.txt','/shell/mytest.txt')

[root@monitor shell]# cat mytest.txt
This is first line
second line
thrid line
fouth line
--my test fifth---
nimeide line

原文地址:https://www.cnblogs.com/binhy0428/p/5086629.html