目录
OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录
os模块的使用
f=open("test.txt","mode")
mode有以下几种:
- r:只读,如果无此文件的话就会报错
- w:写入,覆盖之前的内容,如果无此文件就新建
- a:写入,在文件末尾追加新的内容,文件如果不存在,则新建
- +:更新,须结合r、w、a参数使用,指针在最后面
- b:打开二进制的文件,可以与r、w、a、+结合使用
- U:支持所有的换行符号。“ \r ”、“ \n ", " \r\n "
现在有一个 test.txt 文件,里面有以下内容
hello,word!
iloveyou
读取文件中的内容
我们使用 f.read() 函数,读取文件中的所有内容,返回一个 str 字符串
我们使用 f.readline(size) 函数,读取文件的第一行内容,返回一个字符串,参数size代表读取的字符串,不填默认读取所有
我们使用 f.readlines(size) 函数读取文件中的内容,参数size代表读取的行数,不填默认读取所有,返回一个 list 列表,每一行作为列表的一个值
写入数据到文件中
追加数据
import os
f=open("test.txt","a") ##追加数据到文件中
f.write("hahahahahahha")
f.close() ##关闭文件流
文件会被追加到行的末尾
覆盖原数据
import os
f=open("test.txt","w") ##追加数据到文件中
f.write("hahahahahahha")
f.close() ##关闭文件流
文件会被覆盖
os模块中一些基本的判断文件的函数
获取当前目录下某文件的绝对路径,如果该文件不存在,也返回
os.path.abspath("123.txt")
判断该目录下文件或者目录是否存在,如果存在返回true,否则返回false
os.path.exists("123")
如果存在,则再判断是目录还是文件,如果存在返回true,否则返回false
os.path.isdir("123") //判断是否是目录
os.path.isfile("123") //判断是否是文件
返回给定路径下的所有文件或目录,返回的是列表类型的数据
os.listdir("e://")
将路径和文件名加在一起
path=os.path.join(" c:// ",123.txt)
获得当前的路径
os.getcwd()
CSV
CSV (Comma Separated Values) 即逗号分隔值(也称字符分隔值,因为分隔符可以不是逗号),是一种常用的文本格式,用以存储表格数据,包括数字或者字符。很多程序在处理数据时都会碰到csv这种格式的文件,它的使用是比较广泛的,python内置了处理csv格式数据的csv模块。
读文件
比如我们现在有一个 test.csv的文件,文件内容如下
我们使用reader函数来读取 test.csv 文件中的内容
reader(csvfile, dialect='excel', **fmtparams)
- csvfile 参数,必须是支持迭代(Iterator)的对象,可以是文件(file)对象或者列表(list)对象,如果是文件对象,打开时需要加"b"标志参数。
- dialect参数,编码风格,不写则默认为excel的风格,也就是用逗号(,)分隔,dialect方式也支持自定义,通过调用register_dialect方法来注册
- fmtparams参数,格式化参数,用来覆盖之前dialect对象指定的编码风格。
import csv
with open("test.csv","r") as myFile:
lines=csv.reader(myFile) ##只写第一个参数,默认为excel风格,函数返回一个list列表
for line in lines:
print(line)
读取指定的列
import csv
with open("test.csv","r") as myFile:
lines=csv.reader(myFile)
for line in lines:
print(line[1]) ##序号从0开始
写文件
writer(csvfile, dialect='excel', **fmtparams)
- csvfile 参数,必须是支持迭代(Iterator)的对象,可以是文件(file)对象或者列表(list)对象,如果是文件对象,打开时需要加"b"标志参数。
- dialect参数,编码风格,默认为excel的风格,也就是用逗号(,)分隔,dialect方式也支持自定义,通过调用register_dialect方法来注册
- fmtparams参数,格式化参数,用来覆盖之前dialect对象指定的编码风格。
追加一行数据进去
import csv
row=['5','zhang','30']
with open('test.csv','a') as myFile:
csv_writer=csv.writer(myFile,dialect="excel") //返回一个writer对象
csv_writer.writerow(row) //一行一行写入 csv_writer.writerows()的话是一次写入多行
myFile.close()
覆盖之前的数据
import csv
row=['5','zhang','30']
with open('test.csv','w') as myFile:
csv_writer=csv.writer(myFile,dialect="excel")
csv_writer.writerow(row)
myFile.close()