Python 文件操作
标准输入输出
sys.stdin.readline() 与 input()
import sys
a = sys.stdin.readline().strip('\n')
值得注意的是,sys.stdin.readline()会把标准输入全部获取,包括末尾的换行符 '\n',我们需要用 strip('\n') 去掉换行符 '\n' 。
当我们用内置函数 input() 时,事实上是先把提示信息输出,然后获取输入:
a = input('请输入:')
与 sys.stdin.readline() 一样,input() 将所有输入作为字符串看待,返回字符串类型。
sys.stdout.write() 与 print()
import sys
sys.stdout.write('hello')
注意:交互式模式下除了返回字符串,还会返回字符串长度。
print() 将内容打印到控制台。
print('hello')
举个栗子:输入两个数字,并计算他们之和的平方根。
>>> a = float(input('第一个数字:'))
>>> b = float(input('第二个数字:'))
>>> sum = (a + b) ** (1/2)
>>> print("{0},{1}之和的平方根:{2}".format(a, b, sum))
文件对象
Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理时都需要使用到这个函数。
注意:调用 open() 方法产生文件对象后,一定要调用该对象的 close() 方法关闭文件。
open() 函数常用形式是接收两个参数:文件名和模式。
open(file,mode='r')
常用的模式有:
'r':读
'w':写
'a':追加
'r+' :r+w(可读可写,文件若不存在就报错)
'w+' : w+r(可读可写,文件若不存在就创建)
'a+' :a+r(可追加可写,文件若不存在就创建)
对应的,如果是二进制文件,就都加一个b就好啦:
'rb' 'wb' 'ab' 'rb+' 'wb+' 'ab+'
文件对象的方法
f.read([size]) # 读取指定的字节数
f.readline() # 读取整行,包括 '\n'
f.readlines() # 读取所有行,并返回列表
f.write(str) # 将字符串写入文件,返回写入的字符串长度
f.writelines(sequence) # 向文件写入一个字符串列表
f.tell() # 返回文件当前位置
f.seek(offset[,whence]) # 设置文件当前位置
f.close() # 关闭文件对象
上下文管理器
上下文管理器(context manager)用于规定某个对象的使用范围。一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存)。它的语法形式是 with ... as ... 。可以在不需要文件的时候,自动关闭文件。
with open('new.txt', 'w') as f:
f.write("Hello World!")
上下文管理器有隶属于它的程序块,当程序块执行结束的时候,上下文管理器自动关闭了文件(可以通过 f.closed 来查询文件是否关闭)。
上下文管理器基于对象的特殊方法。Python 在进入程序块之前调用对象的 __enter__() 方法,在结束程序块时调用 __exit__() 方法。在 __exit__() 方法中,有 self.close() 语句。任何定义了 __enter__() 和 __exit__() 方法的对象都可以用于上下文管理器。