查看“Python文件的使用”的源代码
←
Python文件的使用
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==文件的使用== ===文件的打开和关闭=== ====open函数的格式==== open(file, mode='r', buffering=-1, encoding=None, errors=None,newline=None, closefd=True, opener=None) *file参数指定了被打开的文件名称。 *mode参数指定了打开文件后的处理方式。 *buffering参数指定了读写文件的缓存模式。0表示不缓存,1表示缓存,如大于1则表示缓冲区的大小。默认值是缓存模式。 *encoding参数指定对文本进行编码和解码的方式,只适用于文本模式,可以使用Python支持的任何格式,如GBK、utf8、CP936等等。 ====文件打开模式==== 文件打开模式: *[[文件:python7-1.png]] *文件写模式:w 代表清空文件原有内容,a 代表在文件原有内容上追加,x 代表创建新文件,如果文件已存在,则抛出异常 ====使用方法==== *如果执行正常,open()函数返回1个文件对象,通过该文件对象可以对文件进行读写操作。如果指定文件不存在、访问权限不够、磁盘空间不足或其他原因导致创建文件对象失败则抛出异常。 f1 = open( 'file1.txt', 'r' ) # 以读模式打开文件 f2 = open( 'file2.txt', 'w') # 以写模式打开文件 *当对文件内容操作完以后,一定要关闭文件对象,这样才能保证所做的任何修改都确实被保存到文件中。 f1.close() 例题: <nowiki>s = "队伍名\n队长:XXX\n队员:XXX XXX XXX\n" fw = open(r"d:\sample123.txt","w") fw.write(s) fw.close() fr = open(r"d:\sample123.txt","r") print(fr.read()) fr.close()d()) fr.close() </nowiki> 注:写路径时,前面要加上字母r ,表示按照字符的原义去理解路径中的字符 ===文件的类型=== 文件包括文本文件和二进制文件两种类型。 文本文件一般由单一特定编码的字符串组成,如如一个txt格式的文本文件。 二进制文件直接由比特0和皮特一组成,没有统一的字符编码。二进制文件由于没有统一的字符编码,只能当做字节流,而不能看作是字符串。 例题: <nowiki>#写文件 s = 'Hello world\n文本文件的读取方法\n文本文件的写入方法\n' fw = open('sample.txt',"wt") fw.write(s) fw.close() #以文本形式读文件 fr =open('sample.txt',"rt") print(fr.read()) fr.close() #以二进制形式读文件 fr =open('sample.txt',"rb") print(fr.read()) fr.close()</nowiki> '''文件读写结束时,一定要加入fr.close() 来关闭输入输出流。''' 文本文件可以看作是由行组成的组合类型,因此也可以使用遍历循环逐行的遍历文件。 <nowiki>s = '新年都未有芳华,\n二月初惊见草芽。\n白雪却嫌春色晚。\n故穿庭树作飞花。' fw = open('sample.txt',"wt") fw.write(s) fw.close() fp =open('sample.txt',"rt") #假设文件采用CP936编码 for line in fp: #文件对象可以直接迭代 print(line) fp.close()</nowiki> '''可以用for循环来逐行读入文件数据''' ==上下文管理语句with== 在实际开发中,读写文件应优先考虑使用上下文管理语句with,关键字with可以自动管理资源,不论因为什么原因(哪怕是代码引发了异常)跳出with块,总能保证文件被正确关闭,并且可以在代码块执行完毕后自动还原进入该代码块时的上下文,常用于文件操作、数据库连接、网络连接、多线程与多进程同步时的锁对象管理等场合。 <nowiki> with open(filename, mode, encoding) as fp: #这里写通过文件对象fp读写文件内容的语句 </nowiki> *上下文管理语句with还支持下面的用法: <nowiki>with open('test.txt', 'r') as src, open('test_new.txt', 'w') as dst: dst.write(src.read())</nowiki> 所以,上面那个例子用上下文语句可以这么写: <nowiki>s = 'Hello world\n文本文件的读取方法\n文本文件的写入方法\n' with open('sample.txt',"w") as fw: fw.write(s) with open('sample.txt',"r") as fr: print(fr.read())</nowiki> ==文件的读写函数== ===f.read()=== 如果文件不大,可以一次性将文件内容读入,保存到程序内部变量当中,f.read()是最常用的一次性读文件的函数。 <nowiki>#写文件 s = '新年都未有芳华,二月初惊见草芽。白雪却嫌春色晚。故穿庭树作飞花。' fw = open('D:/sample.txt',"wt") fw.write(s) fw.close() #以文本形式读文件 fr =open('D:/sample.txt',"rt") print(fr.read()) fr.close()</nowiki> ===f.readlines()=== f.readlines()也是一次性读入文件的函数,其结果是一个列表,每个元素是文件的一行。 <nowiki>fr =open('D:/sample.txt',"rt") print(fr.readlines()) fr.close()</nowiki> ===f.seek()=== 当从文件中读取内容后,读取指针将向前进,可以用seek()方法将读取指针移动到文件开头 <nowiki>#写文件 s = '新年都未有芳华,二月初惊见草芽。白雪却嫌春色晚。故穿庭树作飞花。' fw = open('D:/sample.txt',"wt") fw.write(s) fw.close() #以文本形式读文件 fr =open('D:/sample.txt',"rt") s=fr.read() print(s) #fr.seek(0) s=fr.read() print(s) fr.close()</nowiki> ===f.write()=== f.write()向文件写入字符串,每次写入后,将会记录一个写入指针。 <nowiki>f = open("D:/test.txt","w") f.write("新年都未有芳华。\n") f.write("2月初惊见草芽。\n") f.write("白雪却嫌春色晚。\n") f.write("故穿庭树作飞花。\n") f.close() fp =open('D:/test.txt',"rt") for line in fp: #文件对象可以直接迭代 print(line) fp.close()</nowiki> ===f.writelines()=== f.writelines()直接将列表类型的各个元素连接起来,写入文件。 <nowiki>f = open("D:/test.txt","w") #f.write("新年都未有芳华。\n") #f.write("2月初惊见草芽。\n") #f.write("白雪却嫌春色晚。\n") #f.write("故穿庭树作飞花。\n") ls = ['新年都未有芳华,\n二月初惊见草芽。\n白雪却嫌春色晚。\n故穿庭树作飞花。\n'] f.writelines(ls) f.close() fp =open('D:/test.txt',"rt") for line in fp: #文件对象可以直接迭代 print(line) fp.close()</nowiki>
返回至
Python文件的使用
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息