一 不同方式打开文件
1、读取文本文件可用:file=open(“文件路径和文件名”,“r”);打开文件之后,直接用read()方法读取数据:a.read();读完之后要关闭文件:a.close()
2、读取二进制文件:file=open(“文件路径和文件名”,“rb”),a.read(),a.close()
3、写入文本文件:file=open(“文件路径和文件名”,“w”),a.write(“12345”),a.close()
4、写入二进制文件:file=open(“文件路径和文件名”,“wb”),a.write(“12323”),a.close()
5、读取文件不支持UTF-8编码时,可进行转码:file = open("文件路径和文件名", "r",encode="gbk")
二 获取文件对象的属性
属性 | 描述 |
---|---|
file.closed | 返回true如果文件已被关闭,否则返回false。 |
file.mode | 返回被打开文件的访问模式。 |
file.name | 返回文件的名称。 |
file.softspace | 如果用print输出后,必须跟一个空格符,则返回false。否则返回true。 |
如下实例:
三 写入/读取文件的内容
写入:
file.write():写入数据到文件file中
读取:
file.read():表示一次读取文件的所有内容
file.readline():表示一次读取一行数据
file.readlines():表示一次读取全部内容,并按行返回list
四 关闭文件
file.close():关闭打开的file文件
五 文件定位
tell():告诉你文件内的当前位置;换句话说,下一次的读写会发生在文件开头这么多字节之后。
seek(offset [,from]):改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。
如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
如下列子:
六 文件重命名/删除
Python的os模块提供了帮你执行文件处理操作的方法,比如重命名和删除文件。要使用这个模块,你必须先导入它,然后才可以调用相关的各种功能。
rename():方法需要两个参数,当前的文件名和新文件名,os.rename(current_file_name, new_file_name)
remove():提供一个参数,当前要删除文件的文件名,os.remove(file_name)
其他os的函数可参考另外一篇
注意:try....finally的使用和with.....as的使用
(1)with
open('/path/to/file', 'r')
as f:
f.write('Hello, world!')
(2)try:
f = open('/path/to/file', 'r')
print(f.read())
finally:
if f:
f.close()
(2)(1)是相同的意思,一般使用文件读写最好使用with ....as语句
问1:到了这里就很好奇,文件open()后,为什么都要close()?
答:每次打开一个文件,都会占用磁盘的资源,
close()是为了释放资源。
如果不close(),那就要等到垃圾回收时,自动释放资源。垃圾回收的时机是不确定的,也无法控制的。
如果程序是一个命令,很快就执行完了,那么可能影响不大(注意:并不是说就保证没问题)。
但如果程序是一个服务,或是需要很长时间才能执行完,或者很大并发执行,就可能导致资源被耗尽,也有可能导致死锁