Python不会写入文件

Posted

技术标签:

【中文标题】Python不会写入文件【英文标题】:Python won't write to file 【发布时间】:2013-10-18 18:05:41 【问题描述】:

我正在尝试将打印精美的电子邮件写入 .txt 文件,以便更好地查看要从中解析出的内容。

这是我的代码的这一部分:

result, data = mail.uid('search', None, "(FROM 'tiffany@e.tiffany.com')") # search and return uids instead
latest_email_uid = data[0].split()[-1]
result, data = mail.uid('fetch', latest_email_uid, '(RFC822)')
raw_email = data[0][1]

html = raw_email
soup = BS(html)
pretty_email = soup.prettify('utf-8')

f = open("da_email.txt", "w")
f.write(pretty_email)
f.close

我没有遇到任何错误,但我无法将数据写入文件。我知道数据已正确存储在 pretty_email 变量中,因为我可以在控制台中打印出来。

有什么想法吗?

我的更新代码仍然不起作用:

result, data = mail.uid('search', None, "(FROM 'tiffany@e.tiffany.com')") # search and return uids instead
latest_email_uid = data[0].split()[-1]
result, data = mail.uid('fetch', latest_email_uid, '(RFC822)')
raw_email = data[0][1]

html = raw_email
soup = BS(html)
pretty_email = soup.prettify('utf-8')

with open("da_email.txt", "w") as f:
    f.write(pretty_email)

【问题讨论】:

【参考方案1】:

您需要调用 close 方法来提交对文件的更改。在末尾添加()

f.close()

或者更好的是使用with

with open("da_email.txt", "w") as f:
    f.write(pretty_email)

自动为你关闭文件

【讨论】:

只是添加... 您确定您在寻找正确的目录吗?它可能会将它放在(某个奇怪的地方)/da_email.txt 中,具体取决于您的程序是如何被调用的。如果它尝试写入但无法写入,则会抛出异常。 到当前工作目录,更具体地说。但它很可能是您从哪里开始(取决于您使用的 IDE)。 @user1887261 - 是的。如果您未指定完整路径,Python 将在与脚本相同的目录(或当前工作目录,如果您更改了它)中查找文件。如果它找到它,它会写信给它。否则,它将在该目录中创建文件。 @user1887261:让我们通过 with open(r"C:\users\Andrew\da_email.txt", "w") as f: 完全排除密码/路径问题,看看会发生什么。【参考方案2】:

您缺少f.close() 末尾的括号。

【讨论】:

这与 3 岁接受的答案相同。

以上是关于Python不会写入文件的主要内容,如果未能解决你的问题,请参考以下文章

Systemd 服务不会将 python 脚本写入文件,python 脚本在从 cli 执行时名义上运行

使用 Python 将列表写入文件

python如何写入文本的最末行?

cv2.VideoWriter 不会使用fourcc h.264写入文件(使用罗技c920,python 2.7,windows 8)

在写入文件之前删除文件的内容(在 Python 中)?

python,将Json写入文件[重复]