原因
在爬虫的使用过程中,我们不可避免的需要新建文件写入我们爬取过来的数据,所以,我们非常有必要再对python文件操作的方法进行一个整理和归纳。
文件打开与关闭
首先要说明的是,打开文件可以用相对路径,也可以用绝对路径,两种方法,open,with open,我要操作的是当前目录下的一个文件test.txt,
open
我们可以用open来打开文件,用open方法打开文件,必须后面用close方法来关闭文件,来表示当前文件操作已经完成,另外,如果要用特定的编码来读写文件,则要在open的括号内写上encoding编码方式。
file = open("test.txt","r",encoding="utf-8") #打开文件
content = file.read() # 读文件
print(content)
file.close() # 关闭文件
with open
with open比open好的一点就是,不需要我们自己close文件,他会自动关闭文件。with open必须要为打开的文件起一个别名。
with open("test.txt","r",encoding="utf-8")as file: #打开文件
content = file.read() #读取文件
print(content)
目录操作
首先需要导入os模块
imopot os
mkdir
os.mkdir() 创建一个目录,可以是相对或者绝对路径,他的特点是:如果创建的多级目录中,有一个目录的父目录不存在,就会报错,所以,os.mkdir只会创建最后一个目录文件
os.mkdir("fruit/apple")
这个目录创建成功的前提是,fruit目录已经存在,且apple不存在。
makedirs
os.makedirs() 创建递归的目录树,可以是相对或者绝对路径
它比os.makedirs 好的一点是:如果创建多级目录时,有个父目录不存在,它也会一并建起。
os.makedirs("fruit/apple")
这个目录创建成功的前提是,apple不存在。
判断目录存在
上面两个方法创建成功的前提都是他们的尾目录一定是不存在的,如果apple目录已经存在,就会报错,所以我们要在创建之前判断目录是否已经存在。
import os
if not os.path.exists("fruit/apple"):
os.makedirs("fruit/apple")
文件读写添加操作
这里先用一个表来列出文件打开的方式:
访问方式 | 说明 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
r只读,r+读写,不创建
w新建只写,w+新建读写,二者都会将文件内容清零(新文件覆盖旧文件)
a:附加写方式打开,不可读;a+: 附加读写方式打开
文件操作
读
read
read方法读取文件所有内容
file = open("test.txt","r",encoding="utf-8")
content = file.read()
print(content)
file.close()
readline
readline方法读取指针所在的行,并将指针移向下一行
file = open("test.txt","r",encoding="utf-8")
content = file.readline()
content2 = file.readline()
print(content,content2)
file.close()
readlines
readlines方法读取整个文件所有行,保存在一个列表中,每行包括行尾的换行符作为一个元素。
file = open("test.txt","r",encoding="utf-8")
content = file.readlines()
print(content)
file.close()
写
write方法:
file = open("test.txt","w",encoding="utf-8")
file.write("中国人民万岁") #写
file.close()
file2 = open("test.txt","r",encoding="utf-8")
content=file2.read()
print(content)
file2.close()
追加
以a或a+方式打开文件,然后用wirte方法写入内容
file = open("test.txt",'a',encoding="utf-8")
file.write("成都昆明重庆发展好呀")
file.close()
file2 = open("test.txt","r",encoding="utf-8")
content=file2.read()
print(content)
file2.close()
删除文件
os.remove
例如,找到并删除当前目录里所有.pyc文件
import os
del_paths = [name for name in os.listdir('.') if name.endswith('.pyc')]
for del_path in del_paths:
os.remove(del_path)
print(os.listdir('.'))