使用Python3我的要求是从目录中读取电子邮件文件并过滤其中的Html标记。
我已经设法在很大程度上做到了。当我尝试读取输出的内容时,它会出错
for line in output.splitlines():
AttributeError: 'int' object has no attribute 'splitlines'
for file in glob.glob('spam/*.*'):
output = os.system("python html2txt.py " + file)
for line in output.splitlines():
print(line)
当我打印输出时,它会显示一个已过滤的文本。非常感谢您的帮助。
答案 0 :(得分:1)
请尝试将其替换为您提供的代码:
import glob
files = glob.glob('spam/*.*')
for f in files:
with open(f) as spam_file:
for line in spam_file:
print(line)
如果文件确实是html文件,我建议您查看BeautifulSoup。
答案 1 :(得分:0)
os.system(command)
的返回值是系统相关的,它假设返回由int
表示的(编码的)进程退出值。阅读更多here
在Unix上,返回值是编码进程的退出状态 为wait()指定的格式。请注意,POSIX未指定 C system()函数的返回值的含义,所以返回 Python函数的值取决于系统。
在Windows上,返回值是系统shell返回的值 运行命令后,由Windows环境变量给出 COMSPEC:在command.com系统(Windows 95,98和ME)上始终如此 0;在cmd.exe系统(Windows NT,2000和XP)上,这是退出 命令运行的状态;在使用非本机shell的系统上, 请参阅您的shell文档。
但是在没有系统的情况下,它返回str
,方法splitlines()
是str方法。阅读更多here
您在str
上调用了int
方法,这就是您收到错误的原因:
AttributeError:'int'对象没有属性'splitlines'
答案 2 :(得分:0)
在Unix上,返回值是编码进程的退出状态 为wait()指定的格式。请注意,POSIX未指定 C system()函数的返回值的含义,所以返回 Python函数的值取决于系统。
在Windows上,返回值是系统shell返回的值 运行命令后。 shell由Windows环境提供 变量COMSPEC:它通常是cmd.exe,它返回退出状态 命令运行;在使用非本机shell的系统上,请咨询您的 shell文档。 python docs
因此,您的output
变量是一个整数,而不是由该文件解析的文件的结果
html2txt.py脚本。
为什么你在当前进程之外运行另一个python脚本?难道你不能从该模块导入正在执行该任务的任何类函数吗?
还有email module可以帮助您