获取文件大小(bytes)
import os
length = os.path.getsize(filename)
读取二进制文件
file = open(filename, 'rb')
file是一个文件对象,'rb'表示打开的模式
data = file.read(n)
返回一个字符串,n为读取的字节数,默认为全部读取
写二进制文件
file = open('a.txt', 'rb+')
data = file.read()
print(data)
data = "QWE"
file.seek(0, 1)
file.write(data)
file.close()
注意这里file.seek(offset, [, whence])用来设置文件指针的位置,whence = 0表示文件头,whence=1表示上一次read后的位置,offset为相对该位置的偏移
读写操作相互交叉的时候都要做一次seek。
file.readline([size])
读一行,其实就是读到\n就结束,返回的内容包括\n;size指定了读入的字节数,如果小于一行,也停止,且文件指针指在当前行,若下次再执行readline,则从上次读取的位置继续读,一直到遇到\n。
file.readlines()
按行读取,返回一个列表,每一个列表里面是某一行的字符串;win系统下,回车符为\r\n,因此如果文件打开方式为rb,则返回的字符串结尾就是\r\n,如果打开方式是r,则返回字符串的结尾的\r\n被替换为\n;
按行读取其实可以用file.read().splitlines()来替换,返回不带\n的字符串的列表。
读写CSV文件
import csv
csvfile = file(filename, [mode])
reader = csv.reader(csvfile)
for line in reader:
print(line)
csv.reader(csvfile)返回一个迭代器,每一个line都是一个列表,代表一行的数据。
writer = csv.writer(csvfile)
line = [1,1,1,1,1]
writer.writerow(line)
写入一行的数据