1,这一段是抄来的:
python常见模块命令(os/sys/platform)
一、Os
Python的标准库中的os模块主要涉及普遍的操作系统功能。可以在Linux和Windows下运行,与平台无关。
- os.sep 可以取代操作系统特定的路径分割符。
- os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。
- os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。
- os.getenv()和os.putenv()函数分别用来读取和设置环境变量。
- os.listdir()返回指定目录下的所有文件和目录名。
- os.remove()函数用来删除一个文件。
- os.system()函数用来运行shell命令。
- os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
- os.path.split()函数返回一个路径的目录名和文件名。
- os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。
- os.path.existe()函数用来检验给出的路径是否真地存在
- os和os.path模块
- os.listdir(dirname):列出dirname下的目录和文件
- os.getcwd():获得当前工作目录
- os.curdir:返回但前目录('.')
- os.chdir(dirname):改变工作目录到dirname
- os.path.isdir(name):判断name是不是一个目录,name不是目录就返回false
- os.path.isfile(name):判断name是不是一个文件,不存在name也返回false
- os.path.exists(name):判断是否存在文件或目录name
- os.path.getsize(name):获得文件大小,如果name是目录返回0L
- os.path.abspath(name):获得绝对路径
- os.path.normpath(path):规范path字符串形式
- os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
- os.path.splitext():分离文件名与扩展名
- os.path.join(path,name):连接目录与文件名或目录
- os.path.basename(path):返回文件名
- os.path.dirname(path):返回文件路径
二、Sys
- sys.argv: 实现从程序外部向程序传递参数。
- sys.exit([arg]): 程序中间的退出,arg=0为正常退出。
- sys.getdefaultencoding(): 获取系统当前编码,一般默认为ascii。
- sys.setdefaultencoding(): 设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys),在执行 setdefaultencoding('utf8'),此时将系统默认编码设置为utf8。(见设置系统默认编码 )
- sys.getfilesystemencoding(): 获取文件系统使用编码方式,Windows下返回'mbcs',mac下返回'utf-8'.
- sys.path: 获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。
- sys.platform: 获取当前系统平台。
- sys.stdin,sys.stdout,sys.stderr stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们
三、Paltform
- platform.system() 获取操作系统类型,windows、linux等
- platform.platform() 获取操作系统,Darwin-9.8.0-i386-32bit
- platform.version() 获取系统版本信息 6.2.0
- platform.mac_ver()
- platform.win32_ver() ('post2008Server', '6.2.9200', '', u'Multiprocessor Free')
psutil.virtual_memory().percent:psutil:是采集系统的基本性能信息包括CPU,内存,磁盘,网络等,可以完整的描述当前系统的
运行状况及质量,psutil封装了这些方法。
2)http://blog.youkuaiyun.com/zhouzhiwengang/article/details/44779521这里讲解了这些内容。、、
3,pyCharm中git的使用:http://www.cnblogs.com/caseast/p/6085837.html
4,traceback:获取详细的异常信息,
try:
- 1/0
- except Exception,e:
- print e 这种情况会报异常,但是不会清楚的指出错误的地址,
- import traceback
- try:
- 1/0
- except Exception,e:
- traceback.print_exc() 这种会指出出错的详细地址
5,platform模块:这个模块给我们提供很多获取操作系统的信息:
platform.platform():获取操作系统的名称和版本号
platform.version():获取操作系统的版本号
platform.architecture():获取操作系统的位数(32位,还是64位)
platform.machine():获取计算机的机型
platform.node:获取计算机的网络名称
platform.processor():计算机处理器的信息
platform.uname():包含上骂你所有信息的汇总
6,ctypes是python的一个外部库,提供和C语言兼容的数据类型,可以很方便的调用C DLL中的函数。对应的指针类型是在后面加上"_p",如int*是c_int_p等等
7,加载DLL
1)stacall调用约定:
2)cdecl调用约定:
- Objdll = ctypes.windll.LoadLibrary("dllpath")
- Objdll = ctypes.WinDLL("dllpath")
其实windll和cdll分别是WinDLL类和CDll类的对象
- Objdll = ctypes.cdll.LoadLibrary("dllpath")
- Objdll = ctypes.CDLL("dllpath")
8,相关的内容:http://blog.youkuaiyun.com/linda1000/article/details/12623527,数组,指针,结构体定义和使用
9,
from multiprocessing.context import Process
process():http://www.cnblogs.com/yanvcl/archive/2013/06/07/3123897.html
http://www.cnblogs.com/kaituorensheng/p/4445418.html
10,python中的collections模块,提供的orderedDic有序字典:字典是无序的,但是oederedDic是有序的字典结构,它记录了每个键值对的添加顺序;如果初始化的时候同时传入过个参数,他们的顺序是随机的,不会按照位置顺序存储。
d
=
OrderedDict(a
=
1
, b
=
2
, c
=
3
)
OrderedDict([(
'a'
,
1
), (
'c'
,
3
), (
'b'
,
2
)])
除了和正常的dic相同的方法之外,OrderedDict还提供了和顺序相关的操作,+popitem():返回最后一个插入的键值对,如果popitem(last = False) 将返回第一个插入的键值对
+reversed:返回一个逆序的OrderedDic
11,psutil模块的简单实用:psutil比较好的地方,一个是跨平台,另一个好处是:工具集中CPU,memory,disks,network,这些信息可以获得到。
可以用来做系统监控,性能分析,进程管理,可以支持的系统由Linux,Windows,OSX,FreeBSD,and Sun Solaris,32和64位系统都支持,同时支持python2.4到3.4https://gist.github.com/search?q=psutil
12,在使用pycharm的时候,如果没有psutil,在中端上pip install psutil就可以安装了。
13,在python中没有二进制的支持,但是,有一个struct模块,http://www.cnblogs.com/qq78292959/archive/2013/04/07/3003607.html
14,将C++传进python中的对象变换为list:在C++那里返回的是一个指针对象,在python中将这个对象转换为list,使用list(object)就可以了
15,进行python使用pdb进行调试:
1)python3 -m pdb *.py:在程序的前一行就会打上断点;一步步进行调试就可以了 ;n是单步进行;s是进入函数内部
2)在指定的位置打断点:import pdb pdb.set_trace():正常运行程序,就可以在指定的位置打印断点了。
16,python编写xml:
最简单的一种,使用字符串进行拼接:
<?xml version="1.0" encoding="windows-1252"?> <ecg_real_list desc="lead_name,start_pos,end_pos,label"> ''' end_flag= ' </ecg_real_list> '这些是头尾的内容,在中间使用写的形式将需要的内容编写成字符串填充其中
比如:
def produce_dl_xml(lead_list_flag,out_xml_file): xmlhandle = open(out_xml_file, 'w') xmlhandle.write(title) segs_info =[] for data_node in lead_list_flag: seg_info = '<seg info="'+str(data_node[0])+','+str(data_node[1])+','+str(data_node[2])+','+str(data_node[3])+'"/>\r' segs_info.append(seg_info) xmlhandle.writelines(segs_info) xmlhandle.write(end_flag) xmlhandle.close()这就编写一个小型的xml;2)进行xml的读取:http://www.cnblogs.com/fnng/p/3581433.html
17,将dict转换为json,在http中传递base64编写的二进制,要转换为json
data_dict['data']= data.decode("utf-8") json_data = json.dumps(data_dict)