老师留的作业问题
来源:1-4 文件的创建与写入(下)
yyz666
2022-06-17 15:59:32
1.请问老师我这里的异常处理写的有没有问题,为什么最后的f.close()的f是打红色的
2. 另外老师我的endswith的用法有无问题,即如果最后为换行则用return跳出函数
完整代码如下:
# coding:utf-8 import os def create_package(path): # 创建一个包 if os.path.exists(path): # 如果路径存在则抛出异常 raise Exception('%s 已经存在不可创建' % path) os.makedirs(path) init_path = os.path.join(path, '__init__.py') f = open(init_path, 'w') # 创建一个脚本文件__init__.py f.write('# coding:utf-8\n') # 写入头注释 f.close() class Open(object): def __init__(self, path, mode='w', is_return=True): self.path = path self.mode = mode self.is_return = is_return def write(self,message): try: f = open(self.path, mode=self.mode, encoding='utf-8') if self.is_return: message = '%s\n' % message # 给文字换行 if message.endswith('\n') == False: return f.write(message) except Exception as e: print(e) finally: f.close() if __name__ == '__main__': current_path = os.getcwd() # path = os.path.join(current_path, 'test1') # create_package(path) open_path = os.path.join(current_path, 'b.txt') o = Open(open_path) o.write('你好 小慕\n')
1回答
同学,你好!对同学的疑问做如下解答:
1、同学写的异常处理没有问题,但是f.close()放在try语句块下更合理些,有open则有close,没有成功open则无需close,例如以下代码中,path设置为空路径,try下面的文件打开并没有执行,程序执行except语句块,而最后的finally语句也会被执行,此时f是不存在的,执行f.close()会报错
2、endswith()用法是可以的,可以实现跳出函数
有一点需要注意,endswith()用于判断字符串是否以指定后缀结尾,以指定后缀结尾返回True,否则返回False。同学已为字符串拼接\n,而if条件却要判断是否等于False,这是由于\n被转义成真正的换行,不是原始的字符串"\n",可以在字符串前面加r,使其不被转义,\n 表示 \ 和 n 两个字符
祝:学习愉快!
相似问题