使用readline()函数Python时出现问题

时间:2014-07-18 18:30:16

标签: python readline

在我的程序中,我打开一个用户输入其名称的文件,计划读取并附加文件(a +)。我使用seek(0)将指针移动到文件的开头,因为它在使用+时从文件末尾开始。然后我使用readline()函数,并检查从该行读取的程序是否在元组中。这是代码:

fileName = input()
fileName += ".txt"
file = open(fileName, "a+")
fileName += ","
print("Opened", fileName, "reading:")
print()

#Reading operation selection
file.seek(0)
operation = file.readline() #Line 0 = operation
if operation not in ('+', '-', '*', '/'):
    print("Did not find valid operation in file.")
    print("Use a file with valid calculation code:")
    continue

我有一个文本文件' file.txt'包含以下内容:

+
12
12
c

当我运行程序并输入' file'时,它返回' Opened file.txt,读取:未在文件中找到有效操作。使用包含有效计算代码的文件:'。 所以,我在一个单独的文件中进行了故障排除并运行了以下代码:

fileName = input()
fileName += ".txt"
file = open(fileName, "a+")
fileName += ","
print("Opened", fileName, "reading:")
print()

#Reading operation selection
file.seek(0)
operation = file.readline() #Line 0 = operation

print(operation)

if operation not in ('+', '-', '*', '/'):
    print("Did not find valid operation in file.")
    print("Use a file with valid calculation code:")
    continue

我运行了这个程序,输入了' file'作为文件名,它返回:     打开file.txt,阅读:

+

Did not find valid operation in file.
Use a file with valid calculation code:

为什么变量操作包含单个字符,即file.txt的第一行,然后是空行?

感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

那是因为Pythons readline也会在行尾返回换行符。例如。 readline() -> "+\n"

您可以使用rstrip("\n")删除行中的换行符。例如。 readline().rstrip("\n")

答案 1 :(得分:-1)

 if operation.strip() not in ('+', '-', '*', '/') 

您需要删除换行符。