这是我的密码:
import re
def get_email_answers(path):
for line in path:
clear = line.strip()
if re.match(r".*\s.*\t(Antw.+)\t.*Uhr", clear):
subject = re.findall(r".*\s.*\t(Antw.+)\t.*Uhr", clear)
print(subject)
def get_sizes(path):
for line in path:
clear = line.strip()
if re.match(r".*\s([0-9][0-9]\s[MKG]B)", clear):
size = re.findall(r".*([0-9][0-9]\s[MKG]B)", clear)
print(size)
elif re.match(r".*\s([0-9][0-9][0-9]\s[MKG]B)", clear):
size = re.findall(r".*([0-9][0-9][0-9]\s[MKG]B)", clear)
print(size)
elif re.match(r".*\s([0-9]\s[MKG]B)", clear):
size = re.findall(r".*([0-9]\s[MKG]B)", clear)
print(size)
elif re.match(r".*(.\.[0-9][0-9]\s[MKG]B)", clear):
size = re.findall(r".*(.\.[0-9][0-9]\s[MKG]B)", clear)
print(size)
file_opener = open(r"C:\Users\julia\Documents\RegEX-Test.txt", "r")
get_sizes(file_opener)
get_email_answers(file_opener)
函数get\u size起作用,但函数get\u email\u answers不起作用。 如果您将函数get_size注释掉,那么get_email_answers就可以完美地工作。如果您将获取电子邮件\u答案放在获取大小之前,则获取大小不起作用,而获取电子邮件\u答案起作用
我已经这样做了:
def get_email_answers(path):
print(path) #modified here
for line in path:
print("line") #and here
clear = line.strip()
if re.match(r".*\s.*\t(Antw.+)\t.*Uhr", clear):
subject = re.findall(r".*\s.*\t(Antw.+)\t.*Uhr", clear)
print(subject)
打印路径与在获取大小中相同。 但是,for循环没有运行! 为什么?当你评论另一个函数时,为什么会这样呢
只能读取一次文件对象。我必须将文件数据存储在一个变量中:
data = file_opener.read()
并对其进行迭代,否则需要在函数末尾返回文件指针试试这个:
澄清一下:问题不在于函数,而在于处理输入文件的方式
读取文件是一个连续的过程。当你打开一个文件时,会创建一个内部“指针”,记住你在文件中的位置——首先它指向文件的开头,每次你读取一个文件块时,“指针”都会经过这个文件块并指向尚未读取的第一个字节。因此,在您的一个函数读取文件后,该指针被设置为文件的末尾,当第二个函数尝试读取该文件时,它看起来是空的。您需要调用
file_opener.seek(0)
,在读取之间重置此指针顺便说一句,
file_opener
是一个稍微容易混淆的名称-此变量保存文件对象本身,而不是提供打开文件功能的某些对象相关问题 更多 >
编程相关推荐