Python 输入 .txt 文件
Python Input .txt Files
我正在独立学习 Python,更具体地说是关于文件 I|O。
要加载文本文件,我被教导使用 .readline() 函数,代码如下。
in_file = open (filename, "rt")
while True:
in_line = in_file.readline ()
if not in_line:
break
in_line = in_line [:-1]
name, number = in_line.split (",")
dic [name] = number
in_file.close ()
我试图了解代码的含义,但我无法理解以下行:
if not in_line:
break
我知道需要跳出 'while' 循环,但实际上它是如何工作的?
如果 in_line
为 false,则没有剩余行可读,break
将中断 while 循环,以便程序可以在文件中没有更多内容可读时结束。
file.readline()
method returns 没有更多行可读时的空字符串:
When size is not 0, an empty string is returned only when EOF is encountered immediately.
条件测试该结束条件,以结束循环。 if not in_line:
仅当 in_line
为空字符串时才为真。 Python 中的所有 'empty' 值都被认为是 false,并且 not
运算符将 false 变为 True
。见 Truth Value Testing section:
Any object can be tested for truth value, for use in an if
or while
condition or as operand of the Boolean operations below. The following values are considered false:
[...]
- any empty sequence, for example,
''
, ()
, []
.
在这里使用 while
循环实际上过于冗长。您可以使用 for
循环更简洁地读取文件,使文件成为迭代器:
for in_line in in_file:
in_line = in_line.rstrip('\n')
不能保证一行以换行结束;上面的 str.rstrip()
调用删除它 只有当它确实存在时 .
最后但同样重要的是,您可以将文件对象用作 上下文管理器;将打开的文件对象传递给 with
语句可确保在块完成时再次自动关闭文件,即使发生异常也是如此:
with open(filename, "rt") as in_file:
for in_line in in_file:
in_line = in_line.rstrip('\n')
并且不再需要单独的 in_file.close()
调用。
另请参阅教程中的 Methods of File Objects section。
我正在独立学习 Python,更具体地说是关于文件 I|O。
要加载文本文件,我被教导使用 .readline() 函数,代码如下。
in_file = open (filename, "rt")
while True:
in_line = in_file.readline ()
if not in_line:
break
in_line = in_line [:-1]
name, number = in_line.split (",")
dic [name] = number
in_file.close ()
我试图了解代码的含义,但我无法理解以下行:
if not in_line:
break
我知道需要跳出 'while' 循环,但实际上它是如何工作的?
如果 in_line
为 false,则没有剩余行可读,break
将中断 while 循环,以便程序可以在文件中没有更多内容可读时结束。
file.readline()
method returns 没有更多行可读时的空字符串:
When size is not 0, an empty string is returned only when EOF is encountered immediately.
条件测试该结束条件,以结束循环。 if not in_line:
仅当 in_line
为空字符串时才为真。 Python 中的所有 'empty' 值都被认为是 false,并且 not
运算符将 false 变为 True
。见 Truth Value Testing section:
Any object can be tested for truth value, for use in an
if
orwhile
condition or as operand of the Boolean operations below. The following values are considered false:[...]
- any empty sequence, for example,
''
,()
,[]
.
在这里使用 while
循环实际上过于冗长。您可以使用 for
循环更简洁地读取文件,使文件成为迭代器:
for in_line in in_file:
in_line = in_line.rstrip('\n')
不能保证一行以换行结束;上面的 str.rstrip()
调用删除它 只有当它确实存在时 .
最后但同样重要的是,您可以将文件对象用作 上下文管理器;将打开的文件对象传递给 with
语句可确保在块完成时再次自动关闭文件,即使发生异常也是如此:
with open(filename, "rt") as in_file:
for in_line in in_file:
in_line = in_line.rstrip('\n')
并且不再需要单独的 in_file.close()
调用。
另请参阅教程中的 Methods of File Objects section。