🥑高级语言有很多共同之处,在文件读写这一部分我们就可以类比着之前我们过的C语言的文件读写的操作进行处理。
🥑还记得我们C语言当中的文件进行操作时所需要的哪些步骤吗?文件打开,文件读/写操作,文件关闭。我们的Python语言在这一点和C语言是完全相同的,只有一些细小的差别,那么我们就从这三大步进行学习Python语言的文件读写操作。
🥑1.打开文件
🥑文件的打开需要用到open函数,我们该函数的原型为〈 file 对象名〉=open(〈文件名〉,〈打开模式〉)。其中文件名包括文件的路径和名称,其实我们的C语言当中的fopen函数也是如此,我们的第一个参数为我们想要打开文件的文件名,其实就是默认为该文件夹内的文件。文件的打开模式包括"r","w","rb","wb","a","ab"等。其中r代表的是read,表示以只读的形式打开一个文件,w代表的是write,表示的是以写的形式打开一个文件b表示以二进制的形式写入或者读出,我们的b参数需要和r和w参数共同使用。
🥑其中以r的形式打开一个文件,如果我们指定的路径下找不到文件程序就会产生报错,但是以w的形式打开一个文件即使我们该路径之下没有所示文件也会自行创建一个新的文件继续让我们进行写入的操作。而我们的a参数表示的是在文件的末尾追加指定的内容。以该参数打开一个文件的作用和我们的w参数相同。如果文件存在就打开文件在文件的末尾进行追加的操作,如果不存在就创建一个新文件进行写入的操作。所对应的代码如下:
🥑没有该文件,无法打开,产生报错。
🥑以 ‘w’ 的方式打开即使找不到文件也会自动创建一个新的文件,便于之后的操作。
🥑以 ‘a’ 的方式打开的作用大致和我们的 ‘w’ 的形式打开。
🥑2.文件的读取
🥑我们上面所进行的操作仅仅是打开一个文件,但是没有对文件进行任何其他的操作。要想对文件进行读取操作我们就需要用到read函数。read()的方式每次读取整个文件,它通常用于将文件内容放到一个字符变量当中。如果文件大于可用内存,为了保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。所示代码如下:
file=open('test.txt','r')
strings=file.read()
print(strings)
🥑读取文件的函数并非只有read()一种,我们还可以使用readline()方法。我们的readline()方法每次只读取一行。我们同样可以使用这个函数进行文件内容的读取。和readline()相似的是我们的readlines()方法。readlines()的方式会自动将文件内容分析成一个行的列表。readline()和readlines()方法的使用示范如下:
file=open('test.txt','r')
strings=file.readlines()
print(strings)
🥑3.文件的写入
🥑write(str)方法,write()方法将字符串str写入文件,此方法没有返回值。由于缓冲,在调用flush()或close方法之前,字符串可能不会写入到打开的相关联的文件当中。可以重复调用write()来写入文件,但是务必要使用close来关闭文件。这个我们内存当中的文件缓冲区的关系有关,我们的系统为了提高程序运行的效率并不会执行一句代码就进行一次系统操作。而是在执行一段代码之后才会统一进行文件操作。如果忘记使用close函数就可能还没有写入文件当中,造成数据的遗失。所以为了避免我们因为忘记关闭文件而造成文件数据的丢失我们可以使用with语句进行我们代码的优化其形式如下:
file=open('test.txt','w')
file.write("hello world")
file.close()
with open('test.txt','w') as f:
f.write('i am lihua!\n')
f.write('i love you\n')
🥑同样的道理我们的写入函数也可以使用writelines()可以将列表中的数据一次性的写入多行到我们的文件当中,而且调用writelines写入多行在性能上会比write一次性写入要好。所示代码如下:
with open('test.txt','w') as f:
f.writelines(['nice to meet','you!'])
🥑4.关闭文件
🥑这一部分是我们文件处理当中最简单的但是也是最为重要的函数之一。就像我们上面所说的那样,我们每次对文件完成操作之后,只有将文件关闭,才可以真正的将数据写入到我们的文件当中。我们的close函数的使用方法如下:
🥑5.Python文件操作扩展
🥑和其他语言不同的是,Python语言还可以对文件进行类似于Linux的文件查找操作。举一个简单的栗子,我们可以使用os.name进行查找操作系统的名字,主要的作用在于判断当前正在使用的平台,并给出操作系统的名字。我们还可以使用os.listdir()方法列出path目录下的所有的文件和目录名(包括隐藏的文件)。path参数可以省略,表示当前的目录。诸如此类的功能还有很多下面我们用代码的形式想大家展示:
🍎1.os.name
🥑如图所示,nt表示Windows操作系统,posix表示Linux操作系统。
🍎os.listdir
🍎os.getcwd
🍎os.path
🍎os.rename
🥑那么我们本次博客的内容也就到此结束了,感谢您的观看,再见。