在python中创建的文件应该打印错误消息[重复]

Posted

技术标签:

【中文标题】在python中创建的文件应该打印错误消息[重复]【英文标题】:File created in python where error message should be printed instead [duplicate] 【发布时间】:2020-07-03 03:33:48 【问题描述】:

我正在使用 python idle 制作一个文件编辑器。我有一个部分,如果请求的文件不存在,它会在文本框(textA)中插入“不存在此类文件”。但是,不是给出错误消息,而是创建一个文件。我的代码是:

def addtofile():
    name = entryA.get()
    try:
        file = open(name, "a")
        content = entryB.get()
        file.write(content)
        file.close()
        windowa.destroy()
        start()
    except:
        content = "No such file exists"
        textA.delete(0.0, END)
        textA.insert(END, content)

我使用“a”打开文件,这样之前的内容就不会被删除。我认为问题在于我如何打开文件。你能告诉我如何打开(我知道'a'、'r'、'w'和'w+')不会覆盖以前的内容但如果文件不存在则不创建文件的文件?

【问题讨论】:

如果文件还不存在,创建文件有什么意义? IDK @mkrieger1 - 我在其他地方已经有了一个功能。 ?????? 有点。我只是不知道这是一种方法。 ┐(´•_•`)┌@mkrieger1 您的代码使用了未定义的“entryB”。那应该是“entryA”还是您的代码不完整? 'windowa' 未定义,您的问题不需要。请参阅***.com/help/minimal-reproducible-example 关于编写要发布的代码。 【参考方案1】:

尝试类似:

from os.path import isfile

def addtofile():
    name = entryA.get()
    try:
        if isfile(name):
            file = open(name, "a")
            content = entryB.get()
            file.write(content)
            file.close()
            windowa.destroy()
            start()
         else:
             print("no file in path exists")
    except:
        content = "No such file exists"
        textA.delete(0.0, END)
        textA.insert(END, content)

这是假设name 返回一个文件名和需要保存文件的路径。否则文件将保存在调用代码的位置。

更好的选择是查看文件目录的路径以及文件是否存在。

类似的东西:

import os
from os.path import isfile

def open_file(path_to_directory):
    """Return file descriptor for file"""
    if os.path.exists(path_to_directory):
        if isfile(path_to_directory):
            print('File in path Found')
            with open(path_to_directory) as c_file:
                return c_file
        else:
            print('File not found.')
            raise FileNotFoundError(path_to_directory)
    else:
        print('Path to Directory of File not found.')
        raise NotADirectoryError(path_to_directory)

在您的代码中使用函数作为

file = open_file(name)
# .. Operations
file.write()
file.close()

【讨论】:

第一个工作正常。我只需要删除尝试,因为它仍然没有插入错误消息,但我已经修复了。谢谢你的帮助:)

以上是关于在python中创建的文件应该打印错误消息[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将您在 python 中创建的 .wav 文件保存到指定目录?

在 python 中打印出文本文件会给出错误消息 -charmap_decode(input,errors,decoding_table) [重复]

我可以从 Python 触发在 KV 文件中创建的屏幕吗?

在 Windows 资源管理器中看不到在 android 中创建的文件 [重复]

将 Outlook 消息保存到 VBA 在本地驱动器中创建的文件夹中

我们如何在Android中重用已经在IOS中创建的Sqlite文件[重复]