鱼C论坛

 找回密码
 立即注册
查看: 1288|回复: 8

[已解决]文件内容的输出格式

[复制链接]
发表于 2020-7-8 13:11:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#编写一个程序,当用户输入文件名和行数(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=''打出来的各行内容之间会有空行,而加了之后就没有空行了?
最佳答案
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 参数的换行效果 导致出现空行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-8 13:14:16 | 显示全部楼层
本帖最后由 yhhpf 于 2020-7-8 13:16 编辑

print()函数默认end="\n"既打印内容结尾是换行符,所以你不填就默认你换行咯,若果赋值end=""则相当于结尾为空(没有结尾)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 13:15:47 | 显示全部楼层
所以同样的,你可以尝试下print('你要打的内容',end='-')
end=' '
end='/t'
等等等等........
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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的内容如下:

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

喂马、劈柴,周游世界

从明天起,关心粮食和蔬菜
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 13:27:07 | 显示全部楼层
本帖最后由 yhhpf 于 2020-7-8 13:30 编辑
好吃的小笼包 发表于 2020-7-8 13:20
我知道print()函数会默认换行,但是我把end=''去掉后它是直接换了两行,就是下面这样

请输入要打开的 ...


文本内容自带换行~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 13:29:45 | 显示全部楼层
默认行尾打印换行符end='\n',这样end=''即可指定行尾什么都不打印,效果即为不换行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 参数的换行效果 导致出现空行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

而 print 的e ...

牛逼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 15:11:58 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 01:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表