ex20函数和文件

这课的小知识点比较多一点,先贴上代码

#coding=utf-8
from sys import argv

script, input_file = argv

def print_all(f): #打印文件所有内容
    print f.read()

def rewind(f): #把指针调至文件开头位置
    f.seek(0)

def print_a_line(line_count, f): #读取内容的一行,每一行以‘\n’结束
    print line_count, f.readline(), #输出行号及这行内容

current_file = open(input_file)

print "First let's print the whole file:\n"

print_all(current_file)

print "Now let's rewind, kind of like a tape."
rewind(current_file)

代码中有三个自定义的函数,其中seek()方法做为了一个小作业,我上网上查了一下,把想关的知识补充上

file.seek(off, whence=0):从文件中移动off个操作标记(文件指针),正往结束方向移动,负往开始方向移动。如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。

我们代码中用到的是seek(0),就是把指针放在开头位置,没有设置off值
再来看看下面的截图

ex20函数和文件_第1张图片
QQ截图20160313201328.png

红箭头处的为什么出现空了一行?
再看下面的图:

ex20函数和文件_第2张图片
QQ截图20160313201450.png

原因如下:

readline()函数返回的内容中包含文件本来就有的\n,而print在打印时又会添加一个\n,这样一来就会多出一个空行了,解决方法是在print语句结尾加一个逗号,这样print就不会把它的\n打印出来了。

你可能感兴趣的:(ex20函数和文件)