持续更新。。。
1 Python os.path() 模块:
os.path 模块主要用于获取文件的属性。
以下是 os.path 模块的几种常用方法:os.path.abspath(path)返回绝对路径。
os.path.basename(path)返回文件名。
os.path.commonprefix(list)返回list(多个路径)中,所有path共有的最长的路径。
os.path.dirname(path)返回文件路径。
os.path.exists(path)如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False。
os.path.isabs(path)判断是否为绝对路径。
os.path.isfile(path)判断路径是否为文件。
os.path.isdir(path)判断路径是否为目录。
os.path.islink(path)判断路径是否为链接。
os.path.split(path)把路径分割成 dirname 和 basename,返回一个元组。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
print( os.path.basename('/root/runoob.txt') ) # 返回文件名
print( os.path.dirname('/root/runoob.txt') ) # 返回目录路径
print( os.path.split('/root/runoob.txt') ) # 分割文件名与路径
print( os.path.join('root','test','runoob.txt') ) # 将目录和文件名合成一个路径
2 Python vars() 函数:
vars()函数返回对象object的属性和属性值的字典对象。
vars() 函数语法:
vars([object])
#vars()
print(vars())
class Foo:
a = 1
print(vars(Foo))
foo = Foo()
print(vars(foo))
输出结果如下:
{'Foo': , 'B': , '__name__': '__main__', '__doc__': None, '__spec__': None,...
{'__module__': '__main__', 'a': 1, '__dict__': , '__weakref__': , '__doc__': None}
{}
3 Python os.listdir() 方法:
listdir()方法语法格式如下:
os.listdir(path)
参数:path -- 需要列出的目录路径
返回值:
返回指定路径下的文件和文件夹列表,需要注意的是它接收的参数需要是一个绝对的路径。
输出该路径下的所有文件和目录名称:
import os
path = '/home/python/Desktop/'
for i in os.listdir(path):
print(i)
4 Python __dict__属性:
# -*- coding: utf-8 -*-
class Parent(object):
a = 0
b = 1
def __init__(self):
self.a = 2
self.b = 3
def p_test(self):
pass
class Child(Parent):
a = 4
b = 5
def __init__(self):
super(Child, self).__init__()
# self.a = 6
# self.b = 7
def c_test(self):
pass
def p_test(self):
pass
p = Parent()
c = Child()
print Parent.__dict__
print Child.__dict__
print p.__dict__
print c.__dict__
结果如下:
{'a': 0, '__module__': '__main__', 'b': 1, '__dict__': , 'p_test': , '__weakref__': , '__doc__': None, '__init__': }
{'a': 4, 'c_test': , '__module__': '__main__', 'b': 5, 'p_test': , '__doc__': None, '__init__': }
{'a': 2, 'b': 3}
{'a': 2, 'b': 3}
虽然说一切皆对象,但对象也有不同,就好比不是每个人的女朋友都是一个人一样,一些内置的数据类型是没有__dict__属性的,如下:
num = 3
ll = []
dd = {}
print num.__dict__
print ll.__dict__
print dd.__dict__
结果:
Traceback (most recent call last):
File "f:\python\test.py", line 54, in
print num.__dict__
AttributeError: 'int' object has no attribute '__dict__'
Traceback (most recent call last):
File "f:\python\test.py", line 55, in
print ll.__dict__
AttributeError: 'list' object has no attribute '__dict__'
Traceback (most recent call last):
File "f:\python\test.py", line 56, in
print dd.__dict__
AttributeError: 'dict' object has no attribute '__dict__'
总结:
1) 内置的数据类型没有__dict__属性
2) 每个类有自己的__dict__属性,就算存着继承关系,父类的__dict__ 并不会影响子类的__dict__
3) 对象也有自己的__dict__属性, 存储http://self.xxx 信息,父子类对象公用__dict__
5 Python 动态导入对象,importlib.import_module()使用:
一个函数运行需要根据不同项目的配置,动态导入对应的配置文件运行。
文件结构:
a #文件夹
│a.py
│__init__.py
b #文件夹
│b.py
│__init__.py
├─c#文件夹
│c.py
│__init__.py
# c.py 中内容
args = {'a':1}
class C:
def c(self):
pass
向a模块中导入C模块的对象:
a.py:
import importlib
params = importlib.import_module('b.c.c') #绝对导入
params_ = importlib.import_module('.c.c',package='b') #相对导入
# 对象中取出需要的对象
params.args #取出变量
params.C #取出class C
params.C.c #取出class C 中的c 方法