我的代码正在将运行期间发生的异常写入文件。但是,如果该文件不存在,我的代码就会中断。代码需要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()
答案 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+')