[英]python 2.7 difficulty with files
我试图创建一个计算动物数量(熊,狼等)并将它们变成变量的程序。
这不起作用
import os
def count_species():
sal_count = 0
tro_count = 0
filename1 = animals.txt
if os.path.exists(animals.txt):
f = open(filename1, 'r')
for line in f:#will execute each line in the file individually
if line == 'Salmon':
sal_count +=1
if line == 'Trout':
tro_count += 1
由于某种原因,程序没有注册第一行== Salmon。 其他一切似乎都有效。 该文件的示例如下所示
Salmon
Trout
Salmon
到底是怎么回事?
您正在读取文件,并迭代文件的行并检查:
if line == 'Salmon':
....
if line == 'Trout':
....
该行可能不一定是这样,它可能在末尾有换行符(它将在这里)。 读取文件并删除换行符。
一种方法:
with open(path to file, "r") as f:
lines = [x.strip() for x in f]
....
您也永远不会关闭该文件。 使用上下文管理器,您不必担心关闭它为您处理的所有内容。
此外,您可能不希望在此处使用两个if
语句。
您可能看不到它们,但是您的第一行不完全是字符串Salmon
,因为它还包含您按下的新行 (或“\\ n” ),例如,ENTER。
使用strip()从字符串中删除空格(包括换行符 ),在您的情况下,该字符串是line
。 更改以下内容:
if line == 'Salmon':
...
if line == 'Trout':
...
成
if line.strip() == 'Salmon':
...
if line.strip() == 'Trout':
...
同样@Pythonista说,总是关闭你的文件。 在末尾添加类似f.close()
的东西with open("filename.txt", "r") as f: ...
或者with open("filename.txt", "r") as f: ...
你可以看看该行中是否存在该单词。
if 'Salmon' in line:
sal_count +=1
if 'Trout' in line:
tro_count += 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.