-
文件系统示意图
查看全部 -
文件close的原因
查看全部 -
文件读写权限
查看全部 -
字符串组成的列表查看全部
-
使用普通方式打开文件,写入u'汉字'
f = open('imooc.txt', 'r+') f.write('123') f.write(u'汉字') #ascii查看全部 -
使用普通方式打开文件,写入u'慕课'
f = open('imooc.txt', 'r+') f.write('123') f.write(u'慕课') #ascii查看全部 -
使用普通方式打开文件,写入u'慕课'
f = open('imooc.txt', 'r+') f.write('123') f.write(u'慕课') #ascii查看全部 -
使用普通方式打开文件,写入u'慕课'
f = open('imooc.txt', 'r+') f.write('123') f.write(u'慕课') #ascii查看全部 -
文件写入和读取的问题:
写入文件后,必须打开才能读取写入的内容
读取文件后,无法重新再次读取读过的内容,必须关闭才可以。
当对文件操作时,有文件内容指针定位当前文件所执行到的位置。当打开时,文件指针在文件起始位置。file.read(3)-->file.write('imooc'),文件指针在第八个位置。若不做其他操作,无法使文件指针归位。
移动文件指针的方法:
seek(偏移量,偏移相对位置)
偏移量可为负数
偏移相对位置:
os.SEEK_SET:相对文件起始位置-->0
os.SEEK_CUR:相对文件当前位置-->1
os.SEEK_END:相对文件结尾位置-->2
0123456789abcdefg f = open('imooc.txt', 'r+') import os f.tell() #返回当前文件的偏移-->0 f.read(3) #-->012 f.tell() #-->3 f.seek(0, os.SEEK_SET) #将文件指针指到起始位置 f.tell() #-->0 f.seek(0, os.SEEK_END) #将文件指针指到结尾位置 f.tell() #-->17 f.read() #-->空 f.seek(-5, os.SEEK_CUR) #将文件指针指到向前移动5个位置 f.tell() #-->12 f.seek(0, os.SEEK_END) f.tell() #-->17 f.seek(-18, os.SEEK_CUR) #无效,超过文件大小查看全部 -
文件关闭
fileno属性:指文件的描述符。每打开一个文件,fileno自动加1,一直累加到1024,打开文件将会失败。
list_f = [] for i in rage(1025): list_f.append(open('imooc.txt', 'w')) print "%d: %d" % (i, list_f[i].fileno()) #-->too many open files良好的习惯:open后不需要时close
查看全部 -
文件写入
write(str):参数为字符串
writelines(sequence of strings):参数为可迭代对象(字符串、字符串组成的元组、字符串组成的迭代器、字符串组成的列表)
f = open('imooc.py', 'w') f.write('test write') f.close() cat imooc.py f = open('imooc.py', 'w') f.writelines('123456') f.writelines(('1','2','3')) f.writelines(['1','2','3']) f.close() cat imooc.py f = open('imooc.py', 'w') f.write('111111') #若不调用close-->文件为空 f.close() #若不主动调用close,内容写入文件缓冲区BUFFER,不写入磁盘文件;调用close时内核将缓冲内容写入磁盘缓存-->磁盘:
主动调用close()或flush()
写入数据量大于或等于写缓存
f = open("imooc.txt", "w") for i in range(10000): f.write('test write ' + str(i) + '\n') #只写了一部分在磁盘 f.close() #缓存同步到磁盘,内容全部写入查看全部 -
文件读取
f = open("imooc.txt") #三行www.imooc.com f.readline() #读取一行:www.imooc.com\n f.readline(100) #读取一行的100个字节,若size大于一行字节数,则读取一行,若小于,则读取一行的size字节::www.imooc.com\n f.readline(2) #读取一行的2个字节:ww f.readline(2) #继续读取一行的2个字节:w. f.readline() #继续读取一行的剩余字节:imooc.com\n list_c = f.readlines(1) #size不是具体读取的字节数,是python里定义的io.DEFAULT_BUFFER_SIZE:8192左右的字节数,最多能读取的字节数 len(list_c) #-->586行(源数据增加10000行),每行14字节,读取8204,近似于8192 f.close()readlines最多能读取缓冲buffer左右的字节,并不是读取完整个文件,但使用iter迭代器读取整个文件。
f = open("imooc.txt") iter_f = iter(f) #文件传入迭代器,不是一次性读取所有内容,不消耗大量内存 lines = 0 for line in iter_f: lines += 1 lines #10003查看全部 -
Linux环境下文件打开方式:
f = open('1.txt') #不存在1.txt f = open('1.txt', 'w') #以只写方式打开,若当前文件不存在-->创建文件 f.write('test write') f.close() cat 1.txt #文件内容:test write f = open('1.txt', 'w') #以只写方式打开,若当前文件存在-->清空文件 f.close() cat 1.txt f = open('hello.py', 'a') #以追加方式打开,在文件结尾处添加内容,若当前文件不存在-->创建文件 f.write("print 'write test'") f.close() cat hello.py f = open('hello.py', 'r+') #以读写方式打开,从文件顶部开始写,覆盖之前内容 f.write("test r+") f.close() cat hello.py f = open('hello.py', 'w+') #以读写方式打开,清空文件,若当前文件不存在-->创建文件 f.read() #内容为空 f.write('test w+ write') f.close() cat hello.py读取一张图片,若使普通方式(文本方式)打开时,不能读取正确信息。当以二进制方式打开时,可以读取正确信息。
查看全部 -
使用iter对文件进行操作查看全部
-
help() 可以查看一个api的说明查看全部
-
文件打开方式查看全部
-
type(f) 查看对象的类型查看全部
-
write方法查看全部
-
write方法查看全部
举报