python 11期 第六天
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 11期 第六天相关的知识,希望对你有一定的参考价值。
常用内置模块
一、json/pickle串
1、json
不同的语言之间进行数据交换,不同程序的内存数据交换。
和xml类似。
import json
a={
‘db‘:[1,‘wang‘],
‘home‘:[‘zhang‘,45],
‘host‘:{‘name‘:‘ting‘,‘age‘:24}
}
#将json写入文件
my_json=json.dumps(a)
f=file(‘data.txt‘,‘wb‘)
f.write(my_json)
#从文件中读取json
af2=file(‘data.txt‘,‘rb‘)
af=af2.read()
json_data=json.loads(af)
af2.close()
dumps和loads是在程序中使用,dump和load可以直接写入文件,和从文件中加载。
2、pickle
import pickle
a={
‘db‘:[1,‘wang‘],
‘home‘:[‘zhang‘,45],
‘host‘:{‘name‘:‘ting‘,‘age‘:24}
}
#将字典数据pickle化写入文件
f=file(‘pickle1.txt‘,‘w‘)
pickle.dump(a,f)
#从文件中读取pickle的数据:
f=file(‘pickle1.txt‘,‘r‘)
pickle2=pickle.load(f)
print ‘===>‘,pickle2
pickle可以序列化大部分的python数据结构,包括时间格式、类、函数等。
备注:将windows下的文件传入linux中的时候,也就是说跨平台传文件 的时候,用python打开文件时候官方推荐用‘rb‘或‘wb‘的方式。如:file(‘/tmp‘,‘rb‘)
二、系统相关的模块
执行系统命令:
os.system() #只返回执行状态
os.spawn*
os.popen() #可以返回执行结果,但将被废弃
即将废弃的模块(该模块不适合在windows上使用,会出错):
commands
commands.getoutput(‘dir‘) #获取命令的结果
commands.getstatus(‘dir‘) #获取命令的执行状态
commands.getstatusoutput() #返回结果和状态
三、subprocess
以上被废弃的模块都被此模块代替:subprocess
subprocess.call([‘dir‘],shell=True) #直接执行命令,无返回结果
#以下命令会把执行结果返回给变量
cmd2=subprocess.check_output([‘dir‘],shell=True)
print cmd2
check_call是在命令执行错误的时候会抛异常,在执行成功的时候和call一样。
cmd2=subprocess.check_call([‘dir‘],shell=True)
Popen类似于os.popen:
subprocess.Popen(...)
用于执行复杂的系统命令
参数:
args:shell命令,可以是字符串或者序列类型(如:list,元组)
bufsize:指定缓冲。0 无缓冲,1 行缓冲,其他 缓冲区大小,负值 系统缓冲
stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄
preexec_fn:只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用
close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道。
所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。
shell:同上
cwd:用于设置子进程的当前目录
env:用于指定子进程的环境变量。如果env = None,子进程的环境变量将从父进程中继承。
universal_newlines:不同系统的换行符不同,True -> 同意使用 \n
startupinfo与createionflags只在windows下有效
将被传递给底层的CreateProcess()函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等
以下是一些例子:
import subprocess
ret1 = subprocess.Popen(["mkdir","t1"])
ret2 = subprocess.Popen("mkdir t2", shell=True)
------------------------------------------------------------------------------
obj = subprocess.Popen("mkdir t3", shell=True, cwd=‘/home/dev‘,)
-------------------------------------------------------------------------------
import subprocess
-----------------------------------------------------------------------------------------
obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
obj.stdin.write(‘print 1 \n ‘)
obj.stdin.write(‘print 2 \n ‘)
obj.stdin.write(‘print 3 \n ‘)
obj.stdin.write(‘print 4 \n ‘)
obj.stdin.close()
cmd_out = obj.stdout.read()
obj.stdout.close()
cmd_error = obj.stderr.read()
obj.stderr.close()
print cmd_out
print cmd_error
--------------------------------------------------------------------------------
import subprocess
obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out_error_list = obj.communicate(‘print "hello"‘)
print out_error_list
##
本文出自 “Linux天地” 博客,谢绝转载!
以上是关于python 11期 第六天的主要内容,如果未能解决你的问题,请参考以下文章