最近学习Python,看了一些文档,文档是英文的,所以就翻译了过来,,更多的是按照自己的理解写的。
操作文件主要 有下面几个方法:
1.file object = open(file_name [, access_mode][, buffering])
首先要新建一个文件的对象,并把文件对应的路径、打开的模式、编码定义好。记住在打开文件期间,其他用户不能再操作这个文件。
file_name: 字符串类型,表示想要打开的文件路径(可以是绝对路径也可以是相对路径)
access_mode: 所谓的模式,就是打开文件的权限。下面我会列出所有的权限
buffering: If the buffering value is set to 0, no buffering takes place. If the buffering value is 1, line buffering is performed while accessing a file. If you specify the buffering value as an integer greater than 1, then buffering action is performed with the indicated buffer size. If negative, the buffer size is the system default(default behavior).(该参数,我没读懂什么意思,有懂的伙伴,可以留言给我。)
下面是打开文件的权限
r:
只读的模式,默认。(以r开头的模式,如果文件不存在的话,会有异常抛出。)
rb
只读模式,以binary的编码格式打开。默认
r+
读写模式。(在读的时候,文件指针在首位置,写文件的时候文件与写文件之后指针会在末尾,所以,如果写完文件之后,在读取文件的话,会读出空字符串)
rb+
读写模式,以binary的编码格式打开。
w
只写模式,如果这个文件存在,则覆盖,如果不存在,则创建。(以w开头的模式,都是在新建这个文件的时候,会重新创建一个全新的文件,然后通过write方法写入,可以一直调用write方法持续写入,直到文件对象被关闭或者释放)
wb
只写模式,以binary的编码格式打开。如果这个文件存在,则覆盖,如果不存在,则创建。
w+
读写模式,如果这个文件存在,则覆盖,如果不存在,则创建。
wb+
读写模式,以binary的编码格式打开。如果这个文件存在,则覆盖,如果不存在,则创建。
a
追加模式,文件的指针在文件最末尾,如果文件存在,在最末尾追加,如果不存在,则创建。
ab
追加模式,以binary的编码格式打开。文件的指针在文件最末尾,如果文件存在,在最末尾追加,如果不存在,则创建。
a+
追加与读模式,文件的指针在文件最末尾,如果文件存在,在最末尾追加,如果不存在,则创建。(此模式下,就算读取,也是空字符串,因为文件指针是在末尾。如果想通过此模式读取,需要把文件指针指向首位置)
ab+
追加与读模式,以binary的编码格式打开。文件的指针在文件最末尾,如果文件存在,在最末尾追加,如果不存在,则创建。
文件对象有4个属性:file.closed、file.mode、file.name、file.softspace
2.close()
该方法会在没有写的动作之后被调用,用来清空缓冲区与关闭该对象
Python会自动关闭相关的对象对文件的引用,但是手动关闭,是一个好的编程习惯
3.write()
在打开文件的时候,设置的权限只要可写,调用此方法,便可写进文件中。如果仅仅是写文件的话,还是只需要w模式或者a模式,尽量少的权限,对程序的安全与稳定是一种保证。
4.read([count])
里面的参数是可选的。如果count>=0 表示读取多少个字节,如果是汉字,2个字节表示一个汉字。如果count<0,则读取所有的内容
5.tell()
该方法返回,文件指针的位置。接下来读写都会从该位置开始。字节为单位
6.seek(offset[, from])
该方法移动文件指针的位置,offset表示指针的偏移量,from表示指针的开始位置。以字节为单位。
7.os.rename(current_file_name, new_file_name)
对文件进行重命名。该方法需要引用os模块。方法中的参数需要时路径(绝对路径/相对路径)
8.os.remove(file_name)
删除文件。该方法需要引用os模块。方法中的参数需要时路径(绝对路径/相对路径)
9.os.mkdir("newdir")
创建目录。 该方法需要引用os模块。方法中的参数需要时路径(绝对路径/相对路径)
如果已经存在该目录,将会报错,所以在新建之前最好做一个判断
10.os.chdir("newdir")
更改当前工作目录。该方法需要引用os模块。方法中的参数需要时路径(绝对路径/相对路径)
11.os.getcwd()
获取当前工作目录。该方法需要引用os模块。
12os.rmdir('dirname')
删除制定目录。该方法需要引用os模块。方法中的参数需要时路径(绝对路径/相对路径)
下面结合方法给出一个实例,实例中有非常详细的注释
import os;
w = open('NewText.txt','w+',encoding='utf-8');#创建一个写文件对象
w.write('Hello World! 你好,世界!');
print(w.read());#结果为空,因为文件指针在末尾
print(w.tell());#打印结果31,此时说明在文件末尾
w.seek(0,0);#现在把文件指针指向首位置
print(w.read());#Hello World! 你好,世界!
w.seek(0,0);#现在把文件指针指向首位置
print(w.read(2));#He
print(w.tell());2
print(w.read(-2));#Hello World! 你好,世界!
os.mkdir('\\newDir\\');#创建一个newDir的目录,如果已经存在该目录,将会报错,所以在新建之前最好做一个判断
os.chdir('\\newDir\\');
w1 = open('newTest.txt','w');
w1.write('nihao');
os.getcwd();#获取当前目录
w1.close();
os.rename('\\newDir\\newTest.txt','\\newDir\\Test.txt');
os.remove('\\newDir\\Test.txt');
os.rmdir('\\newDir\\');
w.close();
以上只是列出一些比较常用的方法。更多的方法,
请到:
有关File的方法:https://www.tutorialspoint.com/python/file_methods.htm
有关OS的方法:https://www.tutorialspoint.com/python/os_file_methods.htm
全凭自己的理解,难免出错,希望大家能指正。大家共同学习。