%%writefile test.txt ? ?先自己写一个模块。
这是一个中文文档
第二行
第三行
第四行
读这个文件有两种方法:
可以是f = open("test.txt")。
然后 f.read() 这样就读取文件里的所有东西了。
然后?f.close() 就样这个文件便关闭了。
还有就是f.readlines() 一行一行的读,这样会输出列表,每一行都会被逗号分开。
还可以这样?f.readline() 少了一个"s”,每次会读出一行。
重复输入??f.readline() 会输出下一行。
f.read()会把剩下的没读的都读完。
现在说一下第二种方法。
就是利用for循环,葫芦娃救爷爷的原理。
for idx, line in enumerate(f): ?enumerate是列举,这里还用了多变量赋值。
print(idx, line) ? ? ? ?加了这两个可以每行多一个序号,没有不影响运行。
然后是文件的写:
写也是需要open方法的。
f = open("test.txt", "w") ? 它比读要多一个变量"w”,代表write。
这样做,文件里的东西都会被覆盖掉。
f.write("这是一个中文文档") ? ?随便写点东西,被覆盖的文件里就会出现新写入的数据。
如果不想让文件被覆盖掉,就这样。
f = open("test.txt", "a") ? "a”代表append,是追加模式。
f.write(" 第二行") 这种模式不会覆盖文件,新加内容会追加到后面,这里 加上可以换行,不加不影响程序,当然会使追加内容直接连在原本内容后面。
注意:每次open文件后要记得用完close。
对资源的操作
close不是必须的。
with open("test.txt") as f: ? ?with open方法。
print(f.read())
用这种方法我们可以不调运close方法。
为什么呢?这里涉及到上下文管理器的模式。
简单来说,就是这个with open会自动关闭文档,来保证它的安全,它的运行模式简单如下:
with xxxx as f:
yyyy f.__enter__
yyyy f.__exit__