Python中创建的文件,应该在其中打印错误消息。

11 浏览
0 Comments

Python中创建的文件,应该在其中打印错误消息。

这个问题已经在这里有了答案:

Pythonic way to check if a file exists? [duplicate]

我用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 +”)?它不会覆盖以前的内容,但如果没有文件,也不会创建文件吗?

admin 更改状态以发布 2023年5月20日
0
0 Comments

尝试这样做:

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()

0