好吃的小笼包 发表于 2020-7-8 13:11:37

文件内容的输出格式

#编写一个程序,当用户输入文件名和行数(N)后,将该文件的前N行内容打印到屏幕上。
def file_view(file_name, line_num):
    print('\n文件%s的前%s的内容如下:\n' % (file_name, line_num))
    f = open(file_name)
    for i in range(int(line_num)):
      print(f.readline(), end= '')

    f.close()

file_name = input(r'请输入要打开的文件(C:\\test.txt):')
line_num = input('请输入需要显示该文件前几行:')
file_view(file_name, line_num)

我对蓝色行的代码不太理解,为什么不加end=''打出来的各行内容之间会有空行,而加了之后就没有空行了?

yhhpf 发表于 2020-7-8 13:14:16

本帖最后由 yhhpf 于 2020-7-8 13:16 编辑

print()函数默认end="\n"既打印内容结尾是换行符,所以你不填就默认你换行咯,若果赋值end=""则相当于结尾为空(没有结尾)

yhhpf 发表于 2020-7-8 13:15:47

所以同样的,你可以尝试下print('你要打的内容',end='-')
end=' '
end='/t'
等等等等........

好吃的小笼包 发表于 2020-7-8 13:20:42

yhhpf 发表于 2020-7-8 13:15
所以同样的,你可以尝试下print('你要打的内容',end='-')
end=' '
end='/t'


我知道print()函数会默认换行,但是我把end=''去掉后它是直接换了两行,就是下面这样

请输入要打开的文件(C:\\test.txt):something.txt
请输入需要显示该文件前几行:3

文件something.txt的前3的内容如下:

从明天起,做一个幸福的人

喂马、劈柴,周游世界

从明天起,关心粮食和蔬菜

yhhpf 发表于 2020-7-8 13:27:07

本帖最后由 yhhpf 于 2020-7-8 13:30 编辑

好吃的小笼包 发表于 2020-7-8 13:20
我知道print()函数会默认换行,但是我把end=''去掉后它是直接换了两行,就是下面这样

请输入要打开的 ...

文本内容自带换行~

zkami 发表于 2020-7-8 13:29:45

默认行尾打印换行符end='\n',这样end=''即可指定行尾什么都不打印,效果即为不换行

Twilight6 发表于 2020-7-8 13:30:12

本帖最后由 Twilight6 于 2020-7-8 13:33 编辑



print 中的 end 默认参数 在将 print 中的内容全部打印完成后会追加打印一个 end 参数

而 print 的end 参数默认值是 \n 换行符,这也是为什么 print 会自动换行的原因

当我们人为将 end 重新赋值时候,end= '\n' 就会被我们人为赋值的值所覆盖

比如你等于一个空字符串 end = ''那么将在 print 函数打印完成后追加打印一个 end 参数的值,即打印一个空字符串

f.readline() 相对于每次对文件读取一行,每读取一行,都会将文件指针移动到下一行的开头

所以每次 for 循环过程中,读取到文件内容都不一样

而且,在读取文件过程中 每一行末尾都会自带 \n 字符串,所以文件会自动换行,而如果你没有将print 函数的 end 重新赋值

会导致你打印文本内容中的换行符效果,然后再追加打印一次 print 的end 参数的换行效果 导致出现空行

好吃的小笼包 发表于 2020-7-8 13:36:41

Twilight6 发表于 2020-7-8 13:30
print 中的 end 默认参数 在将 print 中的内容全部打印完成后会追加打印一个 end 参数

而 print 的e ...

牛逼

小甲鱼的铁粉 发表于 2020-7-8 15:11:58

{:10_275:}
页: [1]
查看完整版本: 文件内容的输出格式