我是一名新的python学习者,我想编写一个程序来读取文本文件,并保存包含“宽度”的一行的值并打印出来。 该文件如下所示:
width: 10128
nlines: 7101
我正在尝试类似的事情:
filename = "text.txtr"
# open the file for reading
filehandle = open(filename, 'r')
while True:
# read a single line
line = filehandle.readline()
if " width " in line:
num = str(num) # type:
print (num)
# close the pointer to that file
filehandle.close()
答案 0 :(得分:1)
这是基于穆罕默德的简化方法。
您需要的是:
它可以提供的Python
num = None # "sentinel" value
with open(file) as fd: # with will ensure file is closed at end of block
for line in fd: # a Python open file is an iterator on lines
if "width" in line: # identify line of interest
num = int(line.split(':')[1]) # get the number in the second part of
# the line when it is splitted on colons
break # ok, line has been found: stop looping
if num is not None: # ok we have found the line
print(num)
答案 1 :(得分:0)
由于行if " width " in line:
,因此未返回结果。
从文件中可以看到,其中没有一行" width "
,也许您想这么做:
if "width:" in line:
#Do things
还请注意,代码存在一些问题,例如,由于行While True:
,您的程序将永远无法完成,因此,您将永远不会真正到达行filehandle.close()
和行的方式您打开文件(首选使用with
)。另外,您正在定义num = str(num)
,但尚未定义num,因此您也会遇到问题。
答案 2 :(得分:0)
您打开文件的方法不好,请在每次打开文件时尝试使用with语句。然后,您可以遍历文件中的每一行,并检查它是否包含宽度,如果需要,则需要提取该数字,这可以使用正则表达式来完成。请参见下面的代码。
import re
filename = "text.txtr"
with open(filename, 'r') as filehandle:
# read a single line
for line in filehandle:
if "width" in line:
num = re.search(r'(\d+)\D+$', line).group(1)
num = str(num) # type:
print (num)
请参阅以下Matt的评论,以获取获取号码的另一种解决方案。
答案 3 :(得分:0)
所有人都不需要将文件保存在变量中,最好使用with open
方法直接打开文件,一旦在self_exit()
函数上执行了读/写操作,它将负责关闭文件。 / p>
因此,您可以像下面这样开始并清理代码:
with open("text.txtr", "r") as fh:
lines = fh.readlines()
for line in lines:
if 'width' in line:
print(line.strip())