按照文件组织的形式,python文件可以分为文本文件和二进制文件
文本文件的每一个字节放一个ASCii码,代表一个字符。二进制文件把内存中的数据按照在内存中的存储形式原样 输出到磁盘上存放。
打开与关闭文件:open()、close()
格式:文件对象=open(文件说明符[,打开方式][,缓冲区])
f = open("c:\a.txt","r") #以读的形式打开文件 #注意文件目录一定要用双\
打开方式: r w a rb wb ab r+ w+ a+ rb+ wb+ ab+
r 方式只能从内存中输出数据 不能像内存中添加数据
w 只能从内存向该文件写数据 不能从文件向内存输入数据
a 添加 注意当前位置是文档末尾
r+ w+ a+ 可以写入和读取
文件属性:
f = open("file.txt","wb") #获取文件名 f.name # file.txt #获取文件打开的方式 f.mode # "wb" #获取信息:文件是否关闭了 f.closed # False #关闭文件 f.close
读写操作
读操作
read()
- 变量 = 文件对象.read() 变量 = 文件对象.read([count])
- re从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
''' kk.txt 里面内容:abcdefghijklmn ''' # 打开文件 fo = open("kk.txt", "r+") str = fo.read(10); print ("读取的字符串是 : ", str) # 关闭打开的文件 fo.close() #输出 读取的字符串是 :abcdefghij
readline()
- 读取当前位置到行末的所有字符,包括行结束符
- 变量=文件对象.readline() 当处于文件末尾 则返回空串 " "
readlines()
从当前位置直到文件末尾的所有行 将所有行构成列表返回值
写操作
write()
- 在当前位置写入字符串,并返回字符的个数
- 文件对象.write(字符串) write()执行后并不会自动换行,如果需要换行可以加入
f = open("kk.txt", "wb") f.write( "ya this is kumata! you know,heyo"); # 关闭打开的文件 f.close()
#linux环境下 $ cat kk.txt
ya this is kumata!
you know,heyo
writelines()
- 在当前位置依次写入列表中的所有字符串
- 文件对象.writelines(字符串的元素列表)
二进制文件操作
文件的定位
文件对象.tell(): 返回当前位置
文件对象.seek(偏移[,参考点]) ,seek例子见 CSDN:seek()
struct模块
pack() 把整型号和浮点型打包为二进制的字符串。
unpack()二进制打包成整型号浮点型
pickle模块:把对象腌制成二进制文件存储
dump() pickle.dump(数据,文件对象)
import pickle list = ['12','34','ok','很好'] f = open("D:kk.pkl","wb") #二进制写入 pickle.dump(list,f) f.close()
os模块
#文件重命名 rename() os.rename("当前文件名“,”新文件名“) #文件删除 remove() os.remove("文件名") #在当前目录创建目录 os.mkdir("新的目录名“) #改变当前目录 os.chdir("目录“) #得到当前目录 os.getcwd() #删除空目录 os.rmdir("待删除的目录 ")