按指定位置要求显示文本的问题
代码如下:import linecache
def show(file_name,row):
f1 = open(file_name)
txt = linecache.getline(file_name)
print(txt)
file_name = input('请输入文件名:')
row = input('请输入启始和结束位置,用:分隔')
(begin, end) = row.split(':')
show(file_name,row)
运行后报错:
TypeError: getline() missing 1 required positional argument: 'lineno'
百度查了下说是对象没可视化,但是还没学到对象,所以很难理解,请问大佬们这段代码可能是其他原因吗?可以的话应该怎么优化嘞?谢谢啦! 没用过这个模块,这提示信息是说缺少参数吧 getline()缺少1个必需的位置参数:“lineno” 青出于蓝 发表于 2021-2-22 08:12
getline()缺少1个必需的位置参数:“lineno”
请输入文件名:111.txt
请输入启始和结束位置,用:分隔 2:5
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\py作业\一个任务\按行显示.py", line 9, in <module>
show(file_name,row)
File "C:\Users\Administrator\Desktop\py作业\一个任务\按行显示.py", line 4, in show
txt = linecache.getline(file_name)
TypeError: getline() missing 1 required positional argument: 'lineno'
>>>
请问一下,不理解缺的是啥
wp231957 发表于 2021-2-22 07:36
没用过这个模块,这提示信息是说缺少参数吧
应该是的
小智1998 发表于 2021-2-22 21:52
请输入文件名:111.txt
请输入启始和结束位置,用:分隔 2:5
Traceback (most recent call last):
不会百度吗
比如
print linecache.getline('2.1_open.py', 4) linecache.getline(filename, lineno, module_globals=None)
从名为 filename 的文件中获取 lineno 行,此函数绝不会引发异常 --- 出现错误时它将返回 '' (所有找到的行都将包含换行符作为结束)。
如果找不到名为 filename 的文件,此函数会先在 module_globals 中检查 PEP 302 __loader__。 如果存在这样的加载器并且它定义了 get_source 方法,则由该方法来确定源行 (如果 get_source() 返回 None,则该函数返回 '')。 最后,如果 filename 是一个相对路径文件名,则它会在模块搜索路径 sys.path 中按条目的相对位置进行查找。
你一个传递的参数是
filename:一个文件的路径
lineno:需要读取的行数,目测是整形,可以测试这样传递
wp231957 发表于 2021-2-22 22:14
不会百度吗
比如
print linecache.getline('2.1_open.py', 4)
百度了好像都是说getline行数只能读取特定一行,如果要读取指定区间的多行应该怎么写呢? 小智1998 发表于 2021-2-23 06:30
百度了好像都是说getline行数只能读取特定一行,如果要读取指定区间的多行应该怎么写呢?
你可以尝试getlinesgetlines 返回所有行可以使用切片 wp231957 发表于 2021-2-23 08:56
你可以尝试getlinesgetlines 返回所有行可以使用切片
恩恩,谢谢回复!
用了getlines以后会报TypeError: slice indices must be integers or None or have an __index__ method
百度这个以后好多说法,不知道我的代码错误类型是啥?,请大佬指点
小智1998 发表于 2021-2-23 20:22
恩恩,谢谢回复!
用了getlines以后会报TypeError: slice indices must be integers or None or have an ...
>>> import linecache
>>> linecache.getlines("2.txt")
['\n', '正在 Ping www.a.shifen.com 具有 32 字节的数据:\n', '来自 110.242.68.4 的回复: 字节=32 时间=26ms TTL=54\n', '来自 110.242.68.4 的回复: 字节=32 时间=26ms TTL=54\n', '来自 110.242.68.4 的回复: 字节=32 时间=26ms TTL=54\n', '来自 110.242.68.4 的回复: 字节=32 时间=26ms TTL=54\n', '\n', '110.242.68.4 的 Ping 统计信息:\n', ' 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),\n', '往返行程的估计时间(以毫秒为单位):\n', ' 最短 = 26ms,最长 = 26ms,平均 = 26ms\n']
>>> linecache.getlines("2.txt")
['正在 Ping www.a.shifen.com 具有 32 字节的数据:\n', '来自 110.242.68.4 的回复: 字节=32 时间=26ms TTL=54\n']
>>> linecache.getlines("2.txt")
[]
>>> linecache.getlines("2.txt")
['来自 110.242.68.4 的回复: 字节=32 时间=26ms TTL=54\n', '来自 110.242.68.4 的回复: 字节=32 时间=26ms TTL=54\n', '来自 110.242.68.4 的回复: 字节=32 时间=26ms TTL=54\n']
>>> lst=linecache.getlines("2.txt")
>>> lst
['\n', '正在 Ping www.a.shifen.com 具有 32 字节的数据:\n', '来自 110.242.68.4 的回复: 字节=32 时间=26ms TTL=54\n', '来自 110.242.68.4 的回复: 字节=32 时间=26ms TTL=54\n', '来自 110.242.68.4 的回复: 字节=32 时间=26ms TTL=54\n', '来自 110.242.68.4 的回复: 字节=32 时间=26ms TTL=54\n', '\n', '110.242.68.4 的 Ping 统计信息:\n', ' 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),\n', '往返行程的估计时间(以毫秒为单位):\n', ' 最短 = 26ms,最长 = 26ms,平均 = 26ms\n']
>>> len(lst)
11
>>> lst
['来自 110.242.68.4 的回复: 字节=32 时间=26ms TTL=54\n', '来自 110.242.68.4 的回复: 字节=32 时间=26ms TTL=54\n', '\n', '110.242.68.4 的 Ping 统计信息:\n']
>>> 小智1998 发表于 2021-2-23 20:22
恩恩,谢谢回复!
用了getlines以后会报TypeError: slice indices must be integers or None or have an ...
lst=linecache.getlines("2.txt")这个就相当于把文件内容 变成列表
后续所有操作 全都是针对列表操作 小智1998 发表于 2021-2-23 20:22
恩恩,谢谢回复!
用了getlines以后会报TypeError: slice indices must be integers or None or have an ...
只不过这个模块有些坑,他要求原始文件一定是utf8 格式的
页:
[1]