文件操作之语法
1.python基础之注释2.python语言学习路线(基础)3.python源码结构4.python发展史及python应用场景5.变量6.bug及debug7.常见数据类型及其转换8.字符串格式化9.转义符10.字符串在货币、日期、精度的处理11.字符编解码12.字符编解码及其相互转换13.内置函数-help-帮助文档14.内置函数print-输出15.内置函数input16.运算符17.int的缓存策略(特别容易混)18.判断语句19.random模块20.判断语句+ random的应用-剪刀石头布游戏21.三元运算符(if else的简写)22.循环语句-while23.循环语句-while-练习题24.循环语句for循环25.循环语句 + else26.字符串类str27.正则在字符串中的简单应用28.列表(List)29.列表list的sort方法的坑30.列表综合应用-8个教室随机分配到3个教室31.元组32.自动组包 & 自动解包33.字典34.集合35.公共操作36.公共操作-推导式(集合、列表、字典)37.函数定义、调用、闭包38.拆包和交换变量值39.函数的变量作用域、返回值、参数40.函数递归41.匿名函数(lambda表达式)0142.内置函数abs43.内置函数round44.内置函数abs0245.高阶函数46.内置高阶函数map47.内置高阶函数reduce48.内置函数reduce49.学生管理系统-函数&循环&运算符综合练习
50.文件操作之语法
51.文件操作2-最佳实践52.文件操作之seek53.文件及文件夹操作54.面向对象基本概念55.面向对象之类、对象的定义56.添加和获取对象属性57.面向对象之魔法方法58.魔法函数 __repr__() 和 __str__()的区别59.魔法方法__len__60.魔法方法之__getitem__(self, key)、__setitem__(self, key, value) 和 __delitem__(self, key) 61.魔法方法之__iter__(self) && __next__(self)62.TypeError: iter() returned non-iterator of type 'MyIterable'63.魔法方法之__contains__()64.魔法方法之__call__65.魔法方法之__getattr__(), __setattr__(), 和 __delattr__66.__eq__(), __lt__(), 和 __gt__() 67.案例:烤地瓜68.案例:给房子置办家具69.继承70.继承之子类复用父类的属性、方法71.继承的分类72.MRO73.继承之子类重写父类同名属性和方法74.⼦类调⽤⽗类的同名⽅法和属性75.私有属性&&方法的定义&访问限制76.setter&getter方法访问私有属性77.__mro__属性78.python 面向对象3大特征详解79. 类属性和实例属性80.类属性和实例属性最佳实践81.类方法82.静态方法83.异常基础84.多组异常处理基础85.多组异常处理86.使用Python内置的错误信息87.捕获所有异常88.手动抛异常(raise)89.try-except-else-finally90.断言assert在异常中应用91.自定义异常类92.模块93.常见的5种模块导入94.模块的定位顺序95.__all__变量限制、明确导入范围96.包97.时间模块datetime98.多任务编程之并发、并行概念99.进程实现多任务(进程概念、单进程、多进程执行多任务)步骤
1. 文件操作步骤
1. 打开文件
2. 读写等操作,此步骤可省略
3. 关闭文件
注意:可以只打开和关闭⽂件,不进⾏任何读写操作。
语法
1 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明:
file
:要打开的文件路径或文件对象。mode
:文件打开模式,默认为'r'
(只读)。常见的模式有:'r'
:只读模式'w'
:写入模式,会覆盖已存在的文件,如果文件不存在则创建新文件'x'
:独占创建模式,仅当文件不存在时创建新文件'a'
:追加模式,在文件末尾追加内容,如果文件不存在则创建新文件'b'
:二进制模式,用于处理非文本文件't'
:文本模式,用于处理文本文件(默认)'+'
:读写模式
buffering
:缓冲大小,控制读取/写入数据的缓冲行为。默认值为-1
,表示使用系统默认的缓冲行为。encoding
:指定文件的编码格式,用于文本模式下的读取/写入操作。errors
:指定编码错误的处理方式。newline
:文本模式下的换行符处理方式。closefd
:关闭文件描述符的标志,默认为True
。opener
:用于自定义开启文件的函数。
示例
1 ''' 2 1. 文件操作步骤 3 1. 打开文件 4 2. 读写等操作,此步骤可省略 5 3. 关闭文件 6 注意:可以只打开和关闭⽂件,不进⾏任何读写操作。 7 8 2. open函数是Python内置的用于打开文件的函数。它的语法如下: 9 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 10 参数说明: 11 1. file:要打开的文件路径或文件对象。 12 2. mode:文件打开模式,默认为'r'(只读)。常见的模式有: 13 1. 'r':只读模式,文件不存在,报错 14 2. 'w':写入模式,会覆盖已存在的文件,如果文件不存在则创建新文件 15 3. 'x':独占创建模式,仅当文件不存在时创建新文件即文件不存在的情况,才可以使用 16 4. 'a':追加模式,在文件末尾追加内容,如果文件不存在则创建新文件 17 4. 'b':二进制模式,用于处理非文本文件 18 5. 't':文本模式,用于处理文本文件(默认) 19 6. '+':读写模式 20 3. buffering:缓冲大小,控制读取/写入数据的缓冲行为。默认值为-1,表示使用系统默认的缓冲行为。 21 4. encoding:指定文件的编码格式,用于文本模式下的读取/写入操作。 22 5. errors:指定编码错误的处理方式。 23 6. newline:文本模式下的换行符处理方式。 24 7. closefd:关闭文件描述符的标志,默认为True。 25 8. opener:用于自定义开启文件的函数。 26 27 常见问题和注意事项: 28 1. 文件路径:确保提供正确的文件路径,包括文件名和相对或绝对路径。 29 2. 文件编码:在文本模式下进行读取/写入操作时,要确保指定正确的编码格式,以避免出现乱码问题。 30 3. 文件打开和关闭:为了避免资源泄漏,应该使用with语句来打开和关闭文件,它会自动处理文件的关闭操作。 31 4. 文件权限:在进行写入操作时,要确保对目标文件具有足够的权限。否则,可能会引发PermissionError异常。 32 5. 二进制模式:如果需要处理非文本文件(如图像、音频等),可以使用二进制模式(通过添加'b')。 33 34 一般与with 关键字一起使用,这样就不要手动关闭资源了 35 with open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) as file: 36 ''' 37 38 ''' 39 1. 向033.txt文件写hello world 40 1. w 和 a 模式:如果⽂件不存在则创建该⽂件;如果⽂件存在, w 模式先清空再写⼊, a 模式直接末尾追加。 41 2. r 模式:如果⽂件不存在则报错。 42 ''' 43 # 1.1 打开文件 44 f = open('033.txt', 'w') # 不存在,自动创建 45 # 1.2 文件写入 46 f.write('hello world,中国人民万岁') 47 f.write('\r\n12345') 48 # 1.3 关闭文件 49 f.close() 50 51 ''' 52 2. 文件读取 53 ''' 54 # content = f.read() # 关闭的文件,无法再次读写使用,否则报错:ValueError: I/O operation on closed file. 55 f = open('033.txt', 'r') # 如果打开的文件不存在,会报 FileNotFoundError: [Errno 2] No such file or directory: '034.txt' 56 content = f.read() 57 print(content) # hello world,中国人民万岁 58 f.close() 59 60 ''' 61 3. 独占模式 62 3.1 'x+'模式是独占创建模式,只有当文件不存在时才会创建新文件,如果文件已经存在,则会引发FileExistsError异常。 63 ''' 64 # f = open('034.txt', 'x+') # 必须是不存在的文件,才可以独享创建,否则报错FileExistsError: [Errno 17] File exists: '033.txt' 65 # f = open('033.txt', 'a+') 66 # content = f.read() 67 # print(content) # hello world,中国人民万岁 68 # num = 1 69 # while True: 70 # if num == 111111111111: 71 # break 72 # num += 1 73 # f.close() 74 75 76 import os 77 import errno 78 79 file_path = '036.txt' 80 mode = os.O_RDWR | os.O_CREAT | os.O_EXCL # 使用读写、创建和独占模式打开文件 81 82 try: 83 fd = os.open(file_path, mode) # <class 'int'> fd 文件文件描述符 84 print(type(fd)) 85 except OSError as e: 86 if e.errno == errno.EEXIST: # 文件已存在 87 print("文件已存在,无法以独占模式打开") 88 else: 89 print(f"打开文件时发生错误: {str(e)}") 90 else: 91 with os.fdopen(fd, 'w+') as f: 92 # 对文件进行读写操作 93 f.write("Hello, World!") # 1. 先写 94 f.seek(0) # 2. 移动指针到文件读 95 content = f.read() # 3. 读取数据 96 print(content) 97 98 ''' 99 open()函数在打开文件时可以接受一些可选的参数,其中包括buffering、encoding、errors和newline。 100 101 1. buffering:控制文件的缓冲行为。可以是以下值之一: 102 0(默认):无缓冲。 103 1:行缓冲。 104 大于1的整数:缓冲区大小(以字节为单位)。 105 2. encoding:指定文件的编码方式。常见的编码方式包括utf-8、gbk等。如果不指定,默认使用系统的默认编码。 106 107 3. errors:指定编解码过程中遇到错误时的处理方式。常见的值有strict(默认,抛出异常)、ignore(忽略错误)、replace(用特殊字符代替错误字符)等。 108 109 4. newline:指定读取或写入文本模式下的换行符处理方式。可以是以下值之一: 110 None(默认):根据平台自动选择换行符处理方式。 111 '':不进行换行符的转换。 112 ' '(空格):将所有换行符转换为单个空格。 113 '\n':将所有换行符转换为LF(Unix风格的换行符)。 114 '\r\n':将所有换行符转换为CRLF(Windows风格的换行符)。 115 ''' 116 # 示例文件名为 '033.txt' 117 118 # 使用默认参数打开文件 119 # f = open('033.txt') 120 # 121 # # 使用指定的缓冲行为和编码方式打开文件 122 # f = open('033.txt', buffering=1024, encoding='utf-8') 123 # 124 # # 使用指定的错误处理方式打开文件 125 # f = open('033.txt', errors='replace') 126 127 # 使用指定的换行符处理方式打开文件 128 f = open('033.txt', 'r', newline='') 129 print(f.read()) 130 f.close()
1 f = open('033.txt', 'r', newline='') 2 print(f.read()) 3 f.close() 4 5 ''' 6 在Python的open()函数中,还有两个可选的参数:closefd和opener。下面将对这两个参数进行详细说明,并提供示例代码。 7 8 closefd:默认为True。当该参数为True时(默认值),打开文件后会关闭底层的文件描述符。当该参数为False时,打开文件后不会关闭底层的文件描述符。通常情况下,建议保持默认值为True,以确保资源的正确释放。 9 10 opener:一个自定义的打开器函数或类。它可以用来替代内置的open()函数,以便在打开文件时应用一些自定义逻辑。打开器函数接受两个参数:文件名和访问模式,并返回一个文件对象。打开器类应该实现__call__()方法,也接受相同的参数并返回一个文件对象。 11 ''' 12 # 示例文件名为 'example.txt' 13 14 # 使用默认参数打开文件,并关闭底层的文件描述符 15 f1 = open('033.txt') 16 17 # 使用closefd=False参数,不关闭底层的文件描述符 18 # ValueError: Cannot use close,fd=False with file name这是因为closefd=False只能与整数类型的文件描述符一起使用,而不能用于打开具体的文件。 19 # f2 = open('033.txt', closefd=False) 20 21 import os 22 23 # 示例文件名为 'example.txt' 24 file_path = '033.txt' 25 26 # 使用 os.open() 函数打开文件,并获取文件描述符 27 fd = os.open(file_path, os.O_RDWR) 28 29 # 使用 closefd=False 参数来打开文件描述符,不关闭底层的文件描述符 30 f = open(fd, mode='r', closefd=False) 31 32 f.close()
1 import os 2 3 file_path = '033.txt' 4 5 # 自定义打开器函数 6 def custom_opener(file, mode): 7 print("自定义打开器函数") 8 fd = os.open(file, mode) 9 return fd 10 11 # 使用自定义的打开器函数打开文件描述符 12 fd = custom_opener(file_path, mode=os.O_RDONLY) 13 14 # 通过文件描述符创建文件对象 15 f = os.fdopen(fd) 16 17 # 进行文件操作... 18 19 # 关闭文件对象 20 f.close() 21 22 # 不需要使用os.close()关闭底层的文件描述符 23 # os.close(fd)
1 import os 2 3 # 示例文件名为 'example.txt' 4 file_path = '033.txt' 5 6 # 自定义打开器函数 7 def custom_opener(file, mode): 8 print("自定义打开器函数") 9 fd = os.open(file, mode) 10 return fd 11 12 # 使用自定义的打开器函数打开文件描述符 13 # fd = open(file_path, mode='r', opener=custom_opener) 14 fd = open(file_path, mode='a', opener=custom_opener) 15 print(fd) # <_io.TextIOWrapper name='033.txt' mode='a' encoding='cp936'> 16 print(type(fd)) # <class '_io.TextIOWrapper'> 17 # 通过文件描述符创建文件对象 18 f = os.fdopen(fd) # TypeError: invalid fd type (<class '_io.TextIOWrapper'>, expected integer) 19 20 # 进行文件操作... 21 22 # 关闭文件对象 23 f.close()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!