鱼C论坛

 找回密码
 立即注册
查看: 2107|回复: 6

[已解决]029讲03题求助

[复制链接]
发表于 2020-4-16 21:55:22 | 显示全部楼层 |阅读模式

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

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

x
  1. file_name = input("请输入要打开的文件(C:\\test.txt):")
  2. file_line = input("请输入需要显示的行数【格式如13:21或:21或21:】:")
  3. f = open(file_name)

  4. (begin,end) = file_line.split(":")
  5. if begin== "":
  6.     begin = 1
  7. if end == "":
  8.     end = -1


  9. if file_line.strip == ":":
  10.     begin = "1"
  11.     end = "-1"

  12. if begin =="1" and end == "-1":
  13.     prompt = "的全文"
  14. elif begin == "1":
  15.     prompt == "从开始到第%s行"%end
  16. elif end =="-1":
  17.     prompt == "从第%s行到末尾"%begin
  18. else:
  19.     prompt == "从第%s行到第%s行"%(begin,end)

  20. print("文件%s%s的内容如下:")%(file_name,prompt)

  21. begin= int(begin) - 1
  22. end = int(end)
  23. lines = end -1

  24. for i in range(begin):
  25.     f.readline()

  26. if lines < 0:
  27.     print(f.read)
  28. else:
  29.     for j in range(lines):
  30.         print(f.readline(),end="")

  31. f.close
复制代码


以上是本人写的代码,以下是错误

  1. 请输入要打开的文件(C:\test.txt):测试1.txt
  2. 请输入需要显示的行数【格式如13:21或:21或21:】::2
  3. Traceback (most recent call last):
  4.   File "D:/学校/python exercise/029_3.py", line 23, in <module>
  5.     prompt == "从第%s行到第%s行"%(begin,end)
  6. NameError: name 'prompt' is not defined
复制代码


我实在不懂为啥prompt还要定义  我看小甲鱼的答案也没有定义,于是我把小甲鱼的答案也拿来跑一下发行也报错。

  1. 请输入要打开的文件(C:\\test.txt):测试1.txt
  2. 请输入需要显示的行数【格式如 13:21 或 :21 或 21: 或 : 】::2

  3. 文件测试1.txt从开始到2的内容如下:

  4. Traceback (most recent call last):
  5.   File "D:/学校/python exercise/029_3_答案.py", line 43, in <module>
  6.     file_view(file_name, line_num)
  7.   File "D:/学校/python exercise/029_3_答案.py", line 37, in file_view
  8.     print(f.readline(), end='')
  9. UnicodeDecodeError: 'gbk' codec can't decode byte 0x87 in position 310: illegal multibyte sequence
复制代码

最佳答案
2020-4-16 22:00:16
你的错误是因为你写错了,赋值操作符是一个等号,你写了两个等号,就变成比较操作符了

小甲鱼的程序在你那里运行有问题,是因为你的txt文件编码格式不对
open打开文件时,添加一个encoding参数,encoding是指定文件编码格式的
f = open(file_name, encoding='utf-8')
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-16 21:56:06 | 显示全部楼层
我懵了 大神们
995
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-16 22:00:16 | 显示全部楼层    本楼为最佳答案   
你的错误是因为你写错了,赋值操作符是一个等号,你写了两个等号,就变成比较操作符了

小甲鱼的程序在你那里运行有问题,是因为你的txt文件编码格式不对
open打开文件时,添加一个encoding参数,encoding是指定文件编码格式的
f = open(file_name, encoding='utf-8')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-16 22:24:06 | 显示全部楼层
sunrise085 发表于 2020-4-16 22:00
你的错误是因为你写错了,赋值操作符是一个等号,你写了两个等号,就变成比较操作符了

小甲鱼的程序在你 ...

已修正,感谢大神!
可是我open这个测试1.txt仍然报错
open测试之前几个作业的txt就可以正常运行
这是什么原因呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-16 22:28:41 | 显示全部楼层
zisu666 发表于 2020-4-16 22:24
已修正,感谢大神!
可是我open这个测试1.txt仍然报错
open测试之前几个作业的txt就可以正常运行

报的什么错?还是UnicodeDecodeError吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-16 22:47:25 | 显示全部楼层
sunrise085 发表于 2020-4-16 22:28
报的什么错?还是UnicodeDecodeError吗?

对的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-16 23:09:16 | 显示全部楼层

再加一个参数,errors='ignore'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 15:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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