文件操作
1.文件读写:打开文件、读写文件、关闭文件
2.打开函数open(filename,mode).mode有r,w,a,r+,w+,a+;rb,wb,ab,rb+,wb+,ab+12种。
练习:编写一个文件拷贝程序,从终端输入一个文件,将文件保存在当前目录下。
def copy_file(filename,new_filename):
fd2 = open(new_filename, "wb")
try:
fd = open(filename,"rb")
except Exception as e:
print(e)
for line in fd:
fd2.write(line)
fd.close()
fd2.close()
编写一个程序,向一个文件中写入如下内容:
1.2009-1-1 18:18:18
2.2009-1-1 18:19:18
每隔一秒写入一次
import time,datetime
fd = open("test","w")
num = 1
while True:
dt =datetime.datetime.fromtimestamp(time.time())
fd.writelines("%s.%s\n"%(str(num),dt.strftime("%Y-%m-%d %H:%M:%S")))
time.sleep(1)
num += 1
if num == 10:
break
fd.close
缓冲区buffer
缓冲刷新的条件:
1.缓冲区满了
2.行缓冲换行时会自动刷新
3.程序正常运行结束或文件close关闭时会自动刷新
4.flush()函数调用时
文件偏移量:系统自动记录每次操作文件生成的一个记录,其中每次操作文件到的位置。
文件的读写操作都是从文件偏移量这个位置开始的。 以下代码就是因为文件偏移量的原因什么都没有显示。
f = open("test","w+")
f.write("hello world!")
f.flush()
data = f.read()
print(data)
f.close()
1.tell():获取文件偏移量的大小,也就是目前文件偏移到了什么位置。
2.seek(offset,[whence]):移动文件偏移量。offset:相对于某个位置移动的字节数。负数向前,正数向后。
whence默认值为0,代表从开头算起,1代表从当前位置算起,2代表从文件末尾算起。
注意:a).每次open打开文件时文件偏移量都在开头。
b).以a的方式打开的文件,文件偏移量在末尾。
c).读写操作共用一个文件偏移量的。
空洞文件:以下代码就是写入了一个1G+8个字节的空文件。
f = open("test02","wb")
f.write(b"start")
f.seek(1024*1024*1024,2)
f.write(b"end")
f.close()
文件描述符:系统中每一次文件操作都会分配一个整数作为编号,该整数即这个IO操作的文件描述符。
获取文件描述符可以通过:fileno()
文件管理函数:
os.path.getsize(file):获取文件大小
os.path.listdir(dir):查看文件列表
os.path.exists(file):查看文件是否存在
os.path.isfile(file):判断文件是否为普通文件
os.remove(file):删除文件