如果在位置找不到文件,则创建新文件

时间:2019-12-04 15:00:33

标签: python

我的代码正在将运行期间发生的异常写入文件。但是,如果该文件不存在,我的代码就会中断。代码需要ExceptionLog_1.txt命名文件才能出现在该位置。

如果代码中断-file not found error

,我如何更改代码以确保代码在该位置创建新文件

我的代码:

def WriteExceptionToFile(self, filingId, traceback):
    count = 1
    fileDir = 'C:/Users/Desktop/SampleTestFiles/ProjectFiles/ExceptionLogFiles/'
    filepath = os.path.join(fileDir, "ExceptionLog_"+str(count)+".txt")

    if os.path.getsize(filepath) < 1048576:
        filepath = os.path.join(fileDir, "ExceptionLog_" + str(count) + ".txt")
    else:
        filepath = os.path.join(fileDir,"ExceptionLog_" + str(count + 1) + ".txt")

    f = open(filepath, 'a+')
    traceback.print_exc(file=f)
    f.close()

2 个答案:

答案 0 :(得分:1)

'a+'标志已经为您处理了文件创建。但是,如果文件夹路径不存在,则需要首先创建目录。

fileDir = 'C:/Users/Desktop/SampleTestFiles/ProjectFiles/ExceptionLogFiles/'

# check if the path exists, create directory if not.
if not(os.path.exists):
    os.mkdir(fileDir)

filepath = os.path.join(fileDir, "ExceptionLog_"+str(count)+".txt")

您还应该练习使用context managers处理文件:

with open(filepath, 'a+') as f:
    traceback.print_exc(file=f)

如果您的fileDir可能有多个不存在的文件夹路径,则可以考虑使用递归mkdir函数来创建所有内部文件夹:

def r_mkdir(pth):
    parent, child = os.path.split(pth)
    if not os.path.exists(parent):
        r_mkdir(parent)
    if not os.path.exists(pth): 
        os.mkdir(pth)

if not(os.path.exists):
    r_mkdir(fileDir)

答案 1 :(得分:0)

您需要通过IOError异常处理以这种方式创建文件,

fileDir = 'C:/Users/Desktop/SampleTestFiles/ProjectFiles/ExceptionLogFiles/'
filepath = os.path.join(fileDir, "ExceptionLog_"+str(count)+".txt")
try:
    fp = open(filepath)
except IOError:
    # If not exists, create the file
    fp = open(filepath, 'w+')