文件对象:

 with open('/etc/hosts') as f:
 这样打开文件不用使用X.close()手动关闭文件,使用with打开文件,在文件使用结结束后会自动关闭。
 
r  以读方式打开(文件不存在则报错)
w 以写方式打开(文件存在则清空,不存在则创建)
a 以追加方式打开(必要时创建新文件)

r+ 以读写方式打开
w+ 以读写方式打开
a+ 以读写方式打开
open、file打开文件,一般用open
read读
readline读一行
readlines 读全部

文件写入:

file = open('/tmp/123.txt', 'w') #以写方式打开文件 file.write('123456') #写入字符串 6

file.write('\n') #写入回车,默认是没有回车的 1

file.close() #关闭文件

文件指针:
文件内移动:
	seek(offset[,whence]) :移动文件指针到不同的位置
	offset是相对于某个位置的偏移量
	whence的值,0表示文件开头,1表示当前位置,2表示文件的结尾

tell():返回当前文件指针的位置
	
	python2中支持从直接将文件指针移动到倒数第三个字符,
	>>> f = open('/etc/hosts')
	>>> f.tell()  #查看当前文件指针的位置
	0
	>>> f.seek(-3, 2)  #将文件指针移动到倒数第三个字符,-3代表偏移量,2代表文件末尾
	>>> f.read()
	'n6\n'

	python3中文件打开方式必需以N + b的方式打开,才可以使用指针从后往前移动
	>>> f = open('/opt/hosts', 'rb')
	>>> f.tell()
	0
	>>> f.seek(-3,2)
	155
	>>> f.read()
	b'n6\n'
		
			适用与日志按时间节点截取的场景:
            一点文件写入123数据到azj文件,
			读取文件最后的文件指针位置到end当中,将文件内容读取到data中。
		
		两点文件写入456数据到azj文件,
			将文件指针移动到文件2点的位置并将文件指针位置赋值给b,
			读取1点到2点之间的文件内容:
				>>> data2 = f.read(b - end)	 	#读取文件上次结束位置到第二次结束位置的内容
				>>> data2
				'456\n'
		
		三点文件写入789数据到azj文件。
			此时文件指针在文件2点时的位置,将剩余文件内容读取到data3中:
				>>> data3 = f.read()			#读取文件剩余的内容
				>>> data3
				'789\n'
				
	>>> f = open('/tmp/azj.txt')   #首先输入123到azj。文件中
	>>> f.seek(0, 2)				#把文件指针移动到行尾
	4
	>>> end = f.tell()				#把文件指针位置赋值
	>>> f.seek(0, 0)				#文件指针返回开头位置
	0
	>>> data = f.read(end)			#读取文件开头到刚才行尾文件指针的文件内容
	>>> data
	'123\n'
	>>> f.seek(0, 2)				#写入456到azj文件,将文件指针移动到文件末尾
	8
	>>> b = f.tell()				#将文件指针位置赋值
	>>> f.seek(end, 0)				#将文件指针移动到上次结束位置
	4
	
	写入789到azj文件
	>>> data2 = f.read(b - end)		#读取文件上次结束位置到第二次结束位置的内容
	>>> data2
	'456\n'
	>>> data3 = f.read()			#读取文件剩余的内容
	>>> data3
	'789\n'
	
文件写入:	
	以r+的方式打开文件时,写入文件是以覆盖的形式写入。

 标准文件:
	    程序一执行,就可以访问三个标准文件
		标准输入:一般是键盘,使用sys.stdin
		sys.stdin.<两次TAB键>
		>>> sys.stdin.readline()
		asdf
		'asdf\n'  #和input差不多,区别是会读取到回车的动作

	标准输出:一般是显示器缓冲输出,使用sys.stdout
		sys.stdout.<两次TAB键>
		>>> sys.stdout.write('12344')
		123445			#返回12344字符串并返回字符串的长度5
		>>> sys.stdout.writelines('123')
		123>>> 			#返回字符串本身,没有回车
	标准错误:一般是显示器的非缓冲输出,使用sys.stderr
		sys.stdeer.<两次TAB键>
		>>> sys.stderr.writelines('123')	#标准错误输出
		123>>>