一、OS模块
1、当前使用平台
os.name:指示你正在使用的工作平台。比如对于Windows,它是
'nt'
,而对于Linux
/Unix
用户,它是
'posix'。
2、当前路径和文件
os.getcwd() :返回当前工作目录
os.listdir(): 返回指定目录下的所有文件和目录名
3、os.path系列
(1)os.path.join(path,name)
该函数实现的功能为连接目录与文件名或目录,
用于路径拼接文件路径,可以传入多个路径。
基本功能为:
要注意:
-
会从第一个以”/”开头的参数开始拼接,之前的参数全部丢弃。
-
以上一种情况为先。在上一种情况确保情况下,若出现”./”开头的参数,会从”./”开头的参数的上一个参数开始拼接。如图:
此外:
输出:
(2)os.path.exists(name)
判断是否存在文件或目录name,
如果存在,返回True;如果不存在,返回False。
(3)os.path.isdir(name):判断name是不是目录,不是目录就返回false
os.path.isfile(name):判断name这个文件是否存在,不存在返回
false
os.path.getsize(name):或得文件大小,如果name是目录返回0L
os.path.abspath(name):获得绝对路径
os.path.isabs():判断是否为绝对路径
os.path.normpath(path):规范path字符串形式
os.path.
split
(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
os.path.splitext():分离文件名和扩展名
os.path.
basename
(path):返回文件名
os.path.
dirname
(path):返回文件路径
os.path.getmtime(path):返回文件或目录的最后修改时间,结果为秒数
os.path.getatime(path):返回文件或目录的最后访问时间,结果为秒数
os.path.getctime(path):返回文件或目录的创建时间,结果为秒数
os.path.getsize(path):返回文件大小
os.path.isfile(path):判断path是否为文件,是返回True,不是返回False
os.path.isdir(path):判断path是否为目录,是返回True,不是返回False
4、os.mkdir()与os.makedirs()
os.mkdir()创建路径中的最后一级目录,即:只创建path_03目录,而如果之前的目录不存在并且也需要创建的话,就会报错。os.makedirs()创建多层目录,即:Test,path_01,path_02,path_03如果都不存在的话,会自动创建。
结果为:
5、os.remove(file
):删除一个文件
os.stat(
file
):获得文件属性
os.
chmod
(
file
):修改文件权限和时间戳
os.
rmdir
(
"dir"
): 只能删除空目录
二、文件操作
os.
mknod
(
"text.txt"
):创建空文件
fp =
open
(
"text.txt"
,w):直接打开一个文件,如果文件不存在就创建文件
关于open
的模式:
w 写方式
a 追加模式打开(从EOF开始,必要时创建新文件)
r+ 以读写模式打开
w+ 以读写模式打开
a+ 以读写模式打开
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )
fp.
read
([size])
#size为读取的长度,以byte为单位
fp.readline([size])
#读一行,如果定义了size,有可能返回的只是一行的一部分
fp.readlines([size])
#把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
fp.write(str)
#把str写到文件中,write()并不会在str后加上一个换行符
fp.writelines(
seq
)
#把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。
fp.close()
#关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。 如果一个文件在关闭后还对其进行操作会产生ValueError
fp.flush()
#把缓冲区的内容写入硬盘
fp.fileno()
#返回一个长整型的”文件标签“
fp.isatty()
#文件是否是一个终端设备文件(unix系统中的)
fp.tell()
#返回文件操作标记的当前位置,以文件的开头为原点
fp.next()
#返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。
fp.seek(offset[,whence])
#将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
fp.truncate([size])
#把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。
三、glob
glob包最常用的方法只有一个, glob.glob()。
函数功能:匹配所有的符合条件的文件,并将其以list的形式返回。跟使用windows下的文件搜索差不多。
”*”匹配0个或多个字符;
”?”匹配单个字符;
”[]”匹配指定范围内的字符,如:[0-9]匹配数字。
如:
import glob
#获取指定目录下的所有图片
print glob.glob(r"/home/Picture/*/*.jpg")
四、Matplotlib
# 导入绘图模块
import matplotlib.pyplot as plt
具体使用可参考:https://www.cnblogs.com/LHWorldBlog/p/7819331.html
五、xrange() 与range函数用法
函数语法:
range(stop)
range([start,] stop[, step]):根据start与stop指定的范围以及step设定的步长,生成一个序列。
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如 xrange(5) 等价于 xrange(0, 5)
- stop: 计数到 stop 结束,但不包括 stop。例如:xrange(0, 5) 是 [0, 1, 2, 3, 4] 没有 5
- step:步长,默认为1。例如:xrange(0, 5) 等价于 xrange(0, 5, 1)
xrange() 函数用法与range 完全相同,所不同的是生成的不是一个数组,而是一个生成器。
由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,这两个基本上都是在循环的时候用:
所以xrange做循环的性能比range好,尤其是返回很大的时候,所以尽量用xrange,除非是要返回一个列表。
NB:以上xrange()函数是在Python2中的函数,在Python 3中,range()的实现方式与xrange()函数相同,所以就不存在专用的xrange( )。
在Python3中range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。
list() 函数是对象迭代器,把对象转为一个列表。返回的变量类型为列表。
六、zip()函数
(1)考虑下面的股票名和价格映射字典:
prices = {'ACME': 45.23,'AAPL': 612.78,'IBM': 205.55,'HPQ': 37.20,'FB': 10.75}
为了对字典值执行计算操作,通常需要使用zip()函数先将键和值反转过来.下面是查找最小和最大股票价格和股票值的代码:
min_price = min(zip(prices.values(), prices.keys()))
# min_price is (10.75, 'FB')
max_price = max(zip(prices.values(), prices.keys()))
# max_price is (612.78, 'AAPL')
执行这些计算的时候,需要注意的是zip() 函数创建的是一个只能访问一次的迭代器。比如,下面的代码就会产生错误:
prices_and_names = zip(prices.values(), prices.keys())
print(min(prices_and_names)) # OK
print(max(prices_and_names)) # ValueError: max() arg is an empty sequence
(2)使用zip函数, 把key和value的list组合在一起, 再转成字典(dict).
七、yield关键字
先介绍可迭代的对象的概念:当你使用一个列表生成式来建立一个列表的时候,就建立了一个可迭代的对象,如:
在这里,所有的值都存在内存当中,所以并不适合大量数据。
再介绍生成器的概念:
- 可迭代
- 只能读取一次
- 实时生成数据,不全存在内存中
这里将“[]"换成了“()"。
yield关键字:
yield
是一个类似return
的关键字,只是这个函数返回的是个生成器- 当你调用这个函数的时候,函数内部的代码并不立马执行 ,这个函数只是返回一个生成器对象
- 当你使用for进行迭代的时候,函数中的代码才会执行
第一次迭代中你的函数会执行,从开始到达 yield 关键字,然后返回 yield 后的值作为第一次迭代的返回值. 然后,每次执行这个函数都会继续执行你在函数内部定义的那个循环的下一次,再返回那个值,直到没有可以返回的。
八、datetime模块计算时间差
python中通过datetime模块可以很方便的计算两个时间的差,datetime的时间差单位可以是天、小时、秒,甚至是微秒。
如下为此函数的使用示例:
import datetime
di=datetime.datetime.now()
for times in range(Max):
PrintN2(A,x)
d1=datetime.datetime.now()
print(d1-di)