您的位置:首页 > 编程语言 > Python开发

python的文件系统---python入门学习(二)

2016-12-08 10:57 169 查看
    从实用角度出发,根据数据挖掘中最长使用的语法和数据类型出发,对Python进行学习,主要包含一下几个模块:数据类型、文件系统、函数、类和对象。学习了一段时间python之后,python相较于matlab最大的区别是编程思想和BIF。由原来的面向过程到现在的面向对象,python无处不对象,这句话体会会随着对python的了解而更加深刻。初学难免有疏漏或者错误,欢迎大家指正。

文件系统
1.打开文件
f = open(file,'w')  打开文件,参数默认为读
‘r’   读,默认模式
‘w’   写,源文件存在则覆盖
‘a’   写,源文件存在则在末尾继续写
‘x’   如果文件存在则会引发异常
注:这些模式选项是可以同时使用的
之前读取数据速度很慢,主要是因为对python不熟悉,使用的是矩阵拼接的方法,现在重新写了一下读取数据代码:
读取效率比较高,读取20W行代码并且转化为矩阵需要33S,如果有更为高效的数据读取方法,欢迎交流
import numpy as np
import os
import time
os.chdir("c:\\")
f = open("test_data.txt")
time1 = time.time()
for cnt,eachline in enumerate(f):  #获取文件大小
    pass
files = np.zeros((cnt+1,len(eachline.split())))#提前初始化矩阵
f.seek(0)                          #文件指针重置
for cnt,eachline in enumerate(f):
    temp = np.array(eachline.split())
    files[cnt,...] = temp         #采用赋值的方法读取文件,速度更快
    if cnt%1000 == 0:
        print cnt  
f.close()
time2 = time.time()
print "总共耗费时间:" + str(time2-time1) #读取20W行数据需要33S

2.文件、目录的BIF
*********************************************************
f.close()                  关闭文件
f.read(size)               如果没有size变量,读取整个文件
f.readline()               读取一行数据  
f.write(str)               将字符串写入文件中
f.seek(offset,from)        文件指针偏移量 from(0,起始位置  1,当前位置  2,文件末尾)offset 偏移量
f.tell()                   返回当前文件指针的位置
os.getcwd()                返回当前工作目录
os.chdir()                 更改工作目录
os.listdir()               返回当前目录下面的所有文件名
os.mkdir()                 创建文件夹
os.rename()                对文件重命名
os.remove(path)            删除文件
  
3.保存复杂数据结构,泡菜
不管是保存还是读取,首先要打开文件:
写入:调用pickle.dump(当前对象,要保存的文件指针)   
读取:调用pickle.load(打开的文件指针)

例子:
import pickle
#保存
my_list = [1,2,3,"xiaoran",[2,3,5]]
pickle_file = open("my_list.pkl","wb")
pickle.dump(my_list,pickle_file)
pickle_file.close()
#读取
pickle_file = open("my_list.pkl","rb")
my_list2 = pickle.load(pickle_file)
print(my_list2)
pickle_file.close()
注意:不管是写入还是读取都要用二进制的方式来打开,扩展名为:.pkl
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: