python - 尝试语句未按预期运行
问题描述
我有三个函数,readHeader
thet 读取 txt 文件的标题,readExpertsFile
读取文件的内容以及exceptionNH
比较文件名和标题并在两者不兼容时引发异常的函数(例如,如果日期在名称与标题不同)。
以下是三个函数和一个txt示例:
def readHeader(fileName):
fileIn = open(fileName, "r")
fileIn.readline()
day = fileIn.readline().replace("\n", "")
fileIn.readline()
time = fileIn.readline().replace("\n", "")
fileIn.readline()
company = fileIn.readline().replace("\n", "")
scope = fileIn.readline().replace(":", "").replace("\n", "")
fileIn.close()
return (day, time, company, scope)
def readFile(fileName):
expertsList = []
expertsList.append(readHeader(fileName))
fileIn = open(fileName, "r")
for line_counter in range(LNHEADER):
fileIn.readline()
fileInE.close()
return expertsList
def exceptionNH(fileName):
try:
assert fileName[10:17] == readFile(fileName)[3][0].lower().replace(":", "")
except AssertionError:
print("Error in input file: inconsistent name and header in file", fileName,".")
exit()
fileName = "file.txt"
exceptionNH("2018y03m28experts10h30.txt")
2018y03m28experts10h30.txt:
Day:
2018-03-28
Time:
10:30
Company:
XXX
Experts:
...
...
我的问题是,在 try 语句中,我希望断言“看到”比较True
并跳过 except 子句,但这并没有发生。
我怀疑它.lower()
不起作用,但我不明白为什么。
如果您看到其他可以更好地分享的东西,因为我是 python 的新手并且想提高自己。
解决方案
我发现了错误。我在想,当我想从列表中的第一个元组中获取第一个元素时,我需要写list[position of item][position of tuple]
,而不是它的逆。
按照 mkrieger1 的建议,我打印了fileName[10:17]
and readFile(fileName)[3][0].lower().replace(":", "")
,第一个很好,但第二个没有显示第一个元组的第三项(即 from readHeader
),而是第三个元组的第一项。
我已经从readFile(fileName)[3][0].lower().replace(":", "")
to更改为readFile(fileName)[0][3].lower().replace(":", "")
现在可以正常工作了,谢谢您的帮助。
推荐阅读
- java - Android Studio (Java) 未按顺序接收正确的 Button 值
- laravel - “已批准”状态后如何更新产品数量?
- apache-spark - 关于 Spark 分区的困境
- json - 如何在我不知道 name 属性的对象数组中执行 *ngFor?
- c++ - 如何在 wxwidgets 中进行多键输入?
- javascript - 我不明白设置日期方法在 JavaScript 中的工作原理
- c# - 查找每个连续字符的计数
- php - 在 MainPage 中验证后无法在 iOS 中推送异步
- python-3.x - Python递归函数创建通用树
- html - 如何舍入水平一分为二的线性渐变背景?