现在的位置: 首页 > 综合 > 正文

python标准库1

2014年07月26日 ⁄ 综合 ⁄ 共 4507字 ⁄ 字号 评论关闭

glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,就类似于Windows下的文件搜索,支持通配符操作,*,?,[]这三个通配符,*代表0个或多个字符,?代表一个字符,[]匹配指定范围内的字符,如[0-9]匹配数字。它的主要方法就是glob,该方法返回所有匹配的文件路径列表,该方法需要一个参数用来指定匹配的路径字符串(本字符串可以为绝对路径也可以为相对路径),其返回的文件名只包括当前目录里的文件名,不包括子文件夹里的文件。

glob.glob(r'c:\*.txt')
我这里就是获得C盘下的所有txt文件
1 basename()  #去掉目录路径,返回文件名
#用法如:
 >>>os.path.basename("c:\temp\test.txt")
'test.txt'
2 dirname()  #去掉文件名,返回目录路径
#用法如:
 >>>os.path.dirname("c:\temp\test.txt")
'c:\\temp'
3 join() #将分离的各部分组合成一个路径名
#用法如:
 >>>os.path.join("c:\temp\","test.txt")
'c:\\temp\\test.txt'
4 split() #返回 目录路径和文件名的元组
>>>os.path.split("c:\temp\","test.txt")
('c:\\temp','test.txt')
5 splitdrive() #返回 驱动符号和路径字符元组
>>>os.path.splitdrive("c:\temp\","test.txt")
('c:','\\temp\\test.txt')
6 splitext() #返回文件名和扩展名元组
>>>os.path.splitext("test.txt")
('test','txt')

1 getatime() #返回文件最近的访问时间
>>>os.path.getatime("c:\temp\test.txt")
1281154109.6167181
#这里的时间以秒为单位,并且从1970年1月1日开始算起。为了获取以天为单位的最后访问日期,可以使用下列代码:
import time # time.time()返回当前时间
age_in_days = (time.time()-time_of_last_access)/(60*60*24)
2 getctime() #返回文件的创建时间
3 getmtime() #返回文件的创建时间
4 getsize() #返回文件的大小 单位为字节
>>>os.path.getsize("c:\temp\test.txt")
1281L

1 exists() #指定路径(文件或目录)是否存在
>>>os.path.exists("c:\temp\test.txt")
True
2 isabs() #指定路径是否为绝对路径
3 isdir() #指定路径是否存在且为一个目录
4 isfile() #指定的路径是否为一个文件
5 samefile() #两个路径名是否指向同一个文件

应用中用得最多的就是str.rstrip('\n\r'),系统间换行符。

试了一下getattr(object,name)确实和object.name是一样的功能.只不过这里可以把name作为一个变量去处理.
def getfunctionbyname(module_name, function_name):
    module = _ _import_ _(module_name)
    return getattr(module, function_name)
print repr(getfunctionbyname("dumbdbm", "open"))

 

dir 返回由给定模块, 类, 实例, 或其他类型的所有成员组成的列表.
def dump(value):
    print value, "=>", dir(value)
import sys
dump(0)
dump(1.0)
dump(0.0j) # complex number
dump([]) # list
dump({}) # dictionary
dump("string")
dump(len) # function
dump(sys) # module

0 => []
1.0 => []
0j => ['conjugate', 'imag', 'real']
[] => ['append', 'count', 'extend', 'index', 'insert',
    'pop', 'remove', 'reverse', 'sort']
{} => ['clear', 'copy', 'get', 'has_key', 'items',
    'keys', 'update', 'values']
string => []
<built-in function len> => ['_ _doc_ _', '_ _name_ _', '_ _self_ _']
<module 'sys' (built-in)> => ['_ _doc_ _', '_ _name_ _',
    '_ _stderr_ _', '_ _stdin_ _', '_ _stdout_ _', 'argv',
    'builtin_module_names', 'copyright', 'dllhandle',
    'exc_info', 'exc_type', 'exec_prefix', 'executable',

 

字典是无序的, 而列表和元组是有序的.
vars 函数与此相似, 它返回的是包含每个成员当前值的字典. 如果你使用不带参数的 vars , 它将返回当前局部名称空间的可见元素(同 locals() 函数 ).
book = "library2"
pages = 250
scripts = 350
print "the %(book)s book contains more than %(scripts)s scripts" % vars()

the library book contains more than 350 scripts

 

type 函数允许你检查一个变量的类型. 这个函数会返回一个 type descriptor (类型描述符), 它对于 Python 解释器提供的每个类型都是不同的.
每个类型都有一个对应的类型对象, 所以你可以使用 is 操作符 (对象身份?) 来 检查类型.
还可以利用isinstance函数,来判断一个对象是否是一个已知的类型。其第一个参数为对象,第二个为类型名或类型名的一个列表。其返回值为布尔型。
 

callable 函数, 如 Example 1-14 所示, 可以检查一个对象是否是可调用的 (无论是直接调用或是通过 apply). 对于函数, 方法, lambda 函式, 类, 以及实现了 _ _call_ _ 方法的类实例, 它都返回 True.

 

def dump(function):
    if callable(function):
        print function, "is callable"
    else:
        print function, "is *not* callable"

class A:
    def method(self, value):
        return value

class B(A):
    def _ _call_ _(self, value):
        return value

a = A()
b = B()

dump(0) # simple objects
dump("string")
dump(callable)
dump(dump) # function

dump(A) # classes
dump(B)
dump(B.method)

dump(a) # instances
dump(b)
dump(b.method)

0 is *not* callable
string is *not* callable
<built-in function callable> is callable
<function dump at 8ca320> is callable
A is callable
B is callable
<unbound method A.method> is callable
<A instance at 8caa10> is *not* callable
<B instance at 8cab00> is callable
<method A.method of B instance at 8cab00> is callable
注意类对象 (A 和 B) 都是可调用的; 如果调用它们, 就产生新的对象(类实例). 但是 A 类的实例不可调用, 因为它的类没有实现 _ _call_ _ 方法.
你可以在 operator 模块中找到检查对象是否为某一内建类型(数字, 序列, 或者字典等) 的函数. 但是, 因为创建一个类很简单(比如实现基本序列方法的类), 所以对这些 类型使用显式的类型判断并不是好主意.
在处理类和实例的时候会复杂些. Python 不会把类作为本质上的类型对待; 相反地, 所有的类都属于一个特殊的类类型(special class type), 所有的类实例属于一个特殊的实例类型(special instance type).
这意味着你不能使用 type 函数来测试一个实例是否属于一个给定的类; 所有的实例都是同样 的类型! 为了解决这个问题, 你可以使用 isinstance 函数,它会检查一个对象是 不是给定类(或其子类)的实例. Example 1-15 展示了 isinstance 函数的使用.

 

 

issubclass 函数与此相似, 它用于检查一个类对象是否与给定类相同, 或者是给定类的子类. 如 Example 1-16 所示.
注意, isinstance 可以接受任何对象作为参数, 而 issubclass 函数在接受非类对象参 数时会引发 TypeError 异常.
class A:
    pass

class B:
    pass

class C(A):
    pass

class D(A, B):
    pass

def dump(object):
    print object, "=>",
    if issubclass(object, A):
        print "A",
    if issubclass(object, B):
        print "B",
    if issubclass(object, C):
        print "C",
    if issubclass(object, D):
        print "D",
    print

dump(A)
dump(B)
dump(C)
dump(D)
dump(0)
dump("string")

A => A
B => B
C => A C
D => A B D
0 =>
Traceback (innermost last):
  File "builtin-issubclass-example-1.py", line 29, in ?
  File "builtin-issubclass-example-1.py", line 15, in dump
TypeError: arguments must be classes

 

eval 函数将一个字符串作为 Python 表达式求值. 你可以传递一串文本, 简单的表达式, 或者使用
内建 Python 函数.

 eval 函数只针对简单的表达式. 如果要处理大块的代码, 你应该使用 compile
和 exec 函数

 

 

 

 

抱歉!评论已关闭.