diff --git a/app/file_open.py b/app/file_open.py new file mode 100644 index 0000000..ee5512a --- /dev/null +++ b/app/file_open.py @@ -0,0 +1,46 @@ +import os + + +class ModeErrorException(Exception): + def __init__(self, error_info): + super().__init__(self) + self.error_info = error_info + + def __str__(self): + return self.error_info + + +class FileOpen: + def __init__(self): + pass + + @staticmethod + def read_only(path, mode='r'): + if mode not in ['r', 'r+', 'rb', 'rt', 'rb+', 'rt+']: + raise ModeErrorException('the input mode is wrong') + my_dir = os.path.dirname(path) # 获得路径的目录 + if not os.path.exists(my_dir): # 判断文件的所有父文件夹是否存在 + os.makedirs(my_dir) # 创建所有父文件夹 + # 读文件需要判断文件是否存在,不存在则创建 + if not os.path.exists(path): + open(path, mode) + return open(path, mode) + + @staticmethod + def write_able(path, mode='w'): + if mode not in ['w', 'w+', 'wb', 'wt', 'wb+', 'wt+']: + raise ModeErrorException('the input mode is wrong') + my_dir = os.path.dirname(path) # 获得路径的目录 + if not os.path.exists(my_dir): # 判断文件的所有父文件夹是否存在 + os.makedirs(my_dir) # 创建所有父文件夹 + return open(path, mode) + + +if __name__ == "__main__": + wf = FileOpen.write_able(r"D:\Workspace\gitcode\EnglishPal\app\static\test.txt") + wf.write("asdasdasd") + wf.close() + + rf = FileOpen.read_only(r"D:\Workspace\gitcode\EnglishPal\app\static\test.txt") + for line in rf.readlines(): + print(line) \ No newline at end of file