首先,现在项目下新建一个文件,名为"test.txt"
1、文件路径 2、编码方式,如gbk等 3、操作方式,如只读、只写、追加、读写、写读等。 4、open函数,在做所有操作之前,打开一个文件是首先的 附: 操作文件有两种形式,一种是通过文件句柄进行,另一种是通过with关键字进行。
1、通过read()函数即rb模式读取文件 实例: 首先,向test.txt文件中写入“dmadmfahda人”内容 然后,在.py文件中输入以下代码
f = open('test.txt','r',encode='utf-8') #打开文件 context = f.read() print(context)读取文件的基本步骤:
调用open()函数打开文件,并设置其模式为读取类型的模式,再设置其编码;需要用一个变量去接收open()函数返回的文件句柄通过open()函数返回的文件句柄调用相应的读取函数,用一个变量接收其返回值即可。注(open函数中的第二个参数): 该函数用来指定操作文件的模式,主要有以下几个:
r:只读操作w:只写操作a:只追加操作r+:读写操作w+:读写操作,由于有w存在,会清空原有文件,然后进行写,此时进行读取操作自然读到的为空文件a+:可以将写入的和原有的内容全部读出来rb:只读操作,并且以bytes形式输出内容wb:只写操作,并且以bytes形式输出内容ab:追加操作,并且以bytes形式输出内容2、以rb模式读取文件,注意,此时不能指定编码格式(即encoding参数)实例如下: 3、在文件读取中常用的函数
read():直接读取出文件内的所有内容readline():一行一行的读,该方法可以传入一个参数,用来指定读取的字符个数,而非读取的行数。readlines():每一行当成列表中的一个元素,添加到列表当中truncate(a):读取原文件位置a以前的文件close():关闭文件句柄tell():获取文件中当前光标所在的位置,在端点续传等功能有重要应用。seek(a):a为整数,可以调节文件中当前光标的位置,在文件的读写操作中都有非常重要的作用。以一个实例为例:
context = "" with open('test.txt','r',encoding='utf-8') as f: context = f.read() print(context)可以看到,用with关键字读取文件的操作不需要使用close()方法关闭文件。其操作的基本语法如下:
with open(文件路径,读取的模式[,文件的编码]) as 句柄名: context = 句柄名.具体的读取函数()python中向文件中写入内容有两种大的方法:
以开头的“w”模式:由于每次用open打开文件时,光标会默认在第一个位置,所以当使用此模式时,文件中原来的内容会被清空,只留下新写入的内容。“a”和“ab”模式:追加,相比于1中的“w”模式,这个模式不会清空文件中的内容。实例: 向“test.txt”文件中写入内容(用with关键字)
with open("test.txt",'w',encoding='utf-8') as fi: s = "dadaasdfmd\nsdamsdfa\nfasdfna" #\n表示换行 fi.write(s)由此可见,文件的修改操作和读取操作的过程及语法极为类似,只需要在open函数中修改相应的模式为写模式而非读取模式,然后调用相应的写即可。
在python中,与操作系统进行直接交互的,大都要用到os模块,比如获取当前文件夹路径等等。这里介绍几个该模块下的函数:
重命名:os.rename(,src,newsrc)删除文件:os.remove()删除空目录:os.removedirs()和rmdir()执行命令行命令:system(command)创建文件夹:mkdir()(一次只能创建一级文件夹)创建多级文件夹:makedirs()注: 删除非空目录则需要使用到另外的模块shutil下的方法rmtree(),该方法可以直接将一个非空目录进行删除。
对于这种文件的操作,需要使用到python的内置模块csv模块,具体的过程如下:
写入步骤: 1. file = open(路径,模式,编码,newline=""):打开文件,newline的参数指定的是新的一行怎么写,即下一次writerow的内容与本次的内容的间隔符,默认换行,即写完后的内容会与上一行间隔一行 2. c = csv.writer(file,dialect):写入文件,其中dialect指定写入的格式,默认为excel 3. c.writerow([]):写入内容,即一行所写入的内容,传入一个列表 4. file.close()关闭文件 读取步骤: 1. file = open(路径,模式,编码):打开文件 2. lines = csv.reader(file) #获取读取到的内容对象 3. 用循环进行读取 for line in lines: print(line) #从这里可以看出,line是一个列表,即其返回的内容有点类似于二维列表 4. 关闭文件:file.close()