±à¼ÍƼö: |
À´Ô´ÓÚcsdn£¬¹²½²½âÁË16¸öÄ£¿é£¬·Ö±ð´úÂëÏêϸÃèÊö£¬Ï£Íû¶Ô´ó¼Ò¹¤×÷ÓаïÖú¡£ |
|
1¡¢time & datetimeÄ£¿é
ʱ¼äÏà¹ØµÄ²Ù×÷£¬Ê±¼äÓÐÈýÖÖ±íʾ·½Ê½£º
ʱ¼ä´Á 1970Äê1ÔÂ1ÈÕÖ®ºóµÄÃ룬¼´£ºtime.time()
¸ñʽ»¯µÄ×Ö·û´® 2014-11-11 11:11£¬ ¼´£ºtime.strftime('%Y-%m-%d')
½á¹¹»¯Ê±¼ä Ôª×é°üº¬ÁË£ºÄê¡¢ÈÕ¡¢ÐÇÆÚµÈ...time.struct_time ¼´£ºtime.localtime()
print(time.time())
print(time.mktime(time.localtime()))
print(time.gmtime()) #¿É¼Óʱ¼ä´Á²ÎÊý
print(time.localtime()) #¿É¼Óʱ¼ä´Á²ÎÊý
print(time.strptime('2014-11-11', '%Y-%m-%d'))
print(time.strftime('%Y-%m-%d %X')) #ĬÈϵ±Ç°Ê±¼ä
print(time.strftime('%Y-%m-%d %X',time.localtime()))
#ĬÈϵ±Ç°Ê±¼ä
print(time.asctime())
print(time.asctime(time.localtime()))
print(time.ctime(time.time())) #ctimeºóÃæ¼ÓµÄÊÇʱ¼ä´Á
import datetime
"""
datetime.date£º±íʾÈÕÆÚµÄÀà¡£³£ÓõÄÊôÐÔÓÐyear, month, day
datetime.time£º±íʾʱ¼äµÄÀà¡£³£ÓõÄÊôÐÔÓÐhour, minute, second,
microsecond
datetime.datetime£º±íʾÈÕÆÚʱ¼ä
datetime.timedelta£º±íʾʱ¼ä¼ä¸ô£¬¼´Á½¸öʱ¼äµãÖ®¼äµÄ³¤¶È
timedelta([days[, seconds[, microseconds[, milliseconds[,
minutes[, hours[, weeks]]]]]]])
strftime("%Y-%m-%d")
"""
import datetime
print(datetime.datetime.now())
print(datetime.datetime.now() - datetime.timedelta(days=5)) |

2¡¢randomÄ£¿é
#Ëæ»úÊý
import random
print(random.random())
print(random.randint(1,8)) #°üÀ¨8
print(random.randrange(1,10)) #²»°üÀ¨10
print(random.choice([1,2,3,4]))
print(random.sample([1,2,3,4],1)) #ºóÃæµÄ1±íʾ´ÓÐòÁÐÖÐÈ¡¼¸¸öÖµ
#Éú³ÉËæ»úÑéÖ¤Âë
import random
checkcode = ''
for i in range(4):
current = random.randrange(0,4)
if current != i:
temp = chr(random.randint(65,90)) #65-90ͨ¹ýת»»Îª´óд×Öĸ£¬97-122ͨ¹ýת»»ÎªÐ¡Ð´×Öĸ
else:
temp = random.randint(0,9)
checkcode += str(temp)
print(checkcode) |
3¡¢OSÄ£¿é
Ìṩ¶Ô²Ù×÷ϵͳ½øÐе÷ÓõĽӿÚ
os.getcwd() »ñÈ¡µ±Ç°¹¤×÷Ŀ¼£¬¼´µ±Ç°python½Å±¾¹¤×÷µÄĿ¼·¾¶
os.chdir("dirname") ¸Ä±äµ±Ç°½Å±¾¹¤×÷Ŀ¼£»Ï൱ÓÚshellÏÂcd
os.curdir ·µ»Øµ±Ç°Ä¿Â¼: ('.')
os.pardir »ñÈ¡µ±Ç°Ä¿Â¼µÄ¸¸Ä¿Â¼×Ö·û´®Ãû£º('..')
os.makedirs('dirname1/dirname2') ¿ÉÉú³É¶à²ãµÝ¹éĿ¼
os.removedirs('dirname1') ÈôĿ¼Ϊ¿Õ£¬Ôòɾ³ý£¬²¢µÝ¹éµ½ÉÏÒ»¼¶Ä¿Â¼£¬ÈçÈôҲΪ¿Õ£¬Ôòɾ³ý£¬ÒÀ´ËÀàÍÆ
os.mkdir('dirname') Éú³Éµ¥¼¶Ä¿Â¼£»Ï൱ÓÚshellÖÐmkdir dirname
os.rmdir('dirname') ɾ³ýµ¥¼¶¿ÕĿ¼£¬ÈôĿ¼²»Îª¿ÕÔòÎÞ·¨É¾³ý£¬±¨´í£»Ï൱ÓÚshellÖÐrmdir
dirname
os.listdir('dirname') ÁгöÖ¸¶¨Ä¿Â¼ÏµÄËùÓÐÎļþºÍ×ÓĿ¼£¬°üÀ¨Òþ²ØÎļþ£¬²¢ÒÔÁÐ±í·½Ê½´òÓ¡
os.remove() ɾ³ýÒ»¸öÎļþ
os.rename("oldname","newname")
ÖØÃüÃûÎļþ/Ŀ¼
os.stat('path/filename') »ñÈ¡Îļþ/Ŀ¼ÐÅÏ¢
os.sep Êä³ö²Ù×÷ϵͳÌض¨µÄ·¾¶·Ö¸ô·û£¬winÏÂΪ"\\",LinuxÏÂΪ"/"
os.linesep Êä³öµ±Ç°Æ½Ì¨Ê¹ÓõÄÐÐÖÕÖ¹·û£¬winÏÂΪ"\t\n",LinuxÏÂΪ"\n"
os.pathsep Êä³öÓÃÓÚ·Ö¸îÎļþ·¾¶µÄ×Ö·û´®
os.name Êä³ö×Ö·û´®Ö¸Ê¾µ±Ç°Ê¹ÓÃƽ̨¡£win->'nt'; Linux->'posix'
os.system("bash command") ÔËÐÐshellÃüÁֱ½ÓÏÔʾ
os.environ »ñȡϵͳ»·¾³±äÁ¿
os.path.abspath(path) ·µ»Øpath¹æ·¶»¯µÄ¾ø¶Ô·¾¶
os.path.split(path) ½«path·Ö¸î³ÉĿ¼ºÍÎļþÃû¶þÔª×é·µ»Ø
os.path.dirname(path) ·µ»ØpathµÄĿ¼¡£Æäʵ¾ÍÊÇos.path.split(path)µÄµÚÒ»¸öÔªËØ
os.path.basename(path) ·µ»Øpath×îºóµÄÎļþÃû¡£ÈçºÎpathÒÔ£¯»ò\½á⣬ÄÇô¾Í»á·µ»Ø¿ÕÖµ¡£¼´os.path.split(path)µÄµÚ¶þ¸öÔªËØ
os.path.exists(path) Èç¹ûpath´æÔÚ£¬·µ»ØTrue£»Èç¹ûpath²»´æÔÚ£¬·µ»ØFalse
os.path.isabs(path) Èç¹ûpathÊǾø¶Ô·¾¶£¬·µ»ØTrue
os.path.isfile(path) Èç¹ûpathÊÇÒ»¸ö´æÔÚµÄÎļþ£¬·µ»ØTrue¡£·ñÔò·µ»ØFalse
os.path.isdir(path) Èç¹ûpathÊÇÒ»¸ö´æÔÚµÄĿ¼£¬Ôò·µ»ØTrue¡£·ñÔò·µ»ØFalse
os.path.join(path1[, path2[, ...]]) ½«¶à¸ö·¾¶×éºÏºó·µ»Ø£¬µÚÒ»¸ö¾ø¶Ô·¾¶Ö®Ç°µÄ²ÎÊý½«±»ºöÂÔ
os.path.getatime(path) ·µ»ØpathËùÖ¸ÏòµÄÎļþ»òÕßĿ¼µÄ×îºó´æȡʱ¼ä
os.path.getmtime(path) ·µ»ØpathËùÖ¸ÏòµÄÎļþ»òÕßĿ¼µÄ×îºóÐÞ¸Äʱ¼ä
os.popen(path) ÀýÈ磺ÔËÐÐa = os.popen('dir').read()
print(a)£¬¿ÉÒÔÏÔʾdirϵÄËùÓÐÄÚÈÝ |
4¡¢sysÄ£¿é
sys.argv ÃüÁîÐвÎÊýList£¬µÚÒ»¸öÔªËØÊdzÌÐò±¾Éí·¾¶
sys.exit(n) Í˳ö³ÌÐò£¬Õý³£Í˳öʱexit(0)
sys.version »ñÈ¡Python½âÊͳÌÐòµÄ°æ±¾ÐÅÏ¢
sys.maxint ×î´óµÄIntÖµ
sys.path ·µ»ØÄ£¿éµÄËÑË÷·¾¶£¬³õʼ»¯Ê±Ê¹ÓÃPYTHONPATH»·¾³±äÁ¿µÄÖµ
sys.platform ·µ»Ø²Ù×÷ϵͳƽ̨Ãû³Æ
sys.stdout.write('please:')
val = sys.stdin.readline()[:-1] |
5¡¢shutilÄ£¿é
¸ß¼¶µÄ Îļþ¡¢Îļþ¼Ð¡¢Ñ¹Ëõ°ü ´¦ÀíÄ£¿é
shutil.copyfileobj(fsrc,
fdst[, length]) ½«ÎļþÄÚÈÝ(»òÕß½ÐÎļþ¶ÔÏó)¿½±´µ½ÁíÒ»¸öÎļþÖУ¬¿ÉÒÔ²¿·ÖÄÚÈÝ
shutil.copyfile(src, dst) ¿½±´Îļþ
shutil.copymode(src, dst) ½ö¿½±´È¨ÏÞ¡£ÄÚÈÝ¡¢×é¡¢Óû§¾ù²»±ä
shutil.copystat(src, dst) ¿½±´×´Ì¬µÄÐÅÏ¢£¬°üÀ¨£ºmode bits,
atime, mtime, flags
shutil.copy(src, dst) ¿½±´ÎļþºÍȨÏÞ
shutil.copy2(src, dst) ¿½±´ÎļþºÍ״̬ÐÅÏ¢
shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
µÝ¹éµÄÈ¥¿½±´Îļþ
ÀýÈ磺copytree(source, destination, ignore=ignore_patterns('*.pyc',
'tmp*'))
shutil.rmtree(path[, ignore_errors[, onerror]])
µÝ¹éµÄȥɾ³ýÎļþ
shutil.move(src, dst) µÝ¹éµÄÈ¥Òƶ¯Îļþ
shutil.make_archive(base_name, format,...)
´´½¨Ñ¹Ëõ°ü²¢·µ»ØÎļþ·¾¶£¬ÀýÈ磺zip¡¢tar
base_name£ºÑ¹Ëõ°üµÄÎļþÃû£¬Ò²¿ÉÒÔÊÇѹËõ°üµÄ·¾¶¡£Ö»ÊÇÎļþÃûʱ£¬Ôò±£´æÖÁµ±Ç°Ä¿Â¼£¬·ñÔò±£´æÖÁÖ¸¶¨Â·¾¶£¬È磺backup=>±£´æÖÁµ±Ç°Â·¾¶£»È磺/home/www/backup
=>±£´æÖÁ/home/www/
format£ºÑ¹Ëõ°üÖÖÀ࣬¡°zip¡±, ¡°tar¡±, ¡°bztar¡±£¬¡°gztar¡±
root_dir£ºÒªÑ¹ËõµÄÎļþ¼Ð·¾¶£¨Ä¬Èϵ±Ç°Ä¿Â¼£©
owner£ºÓû§£¬Ä¬Èϵ±Ç°Óû§
group£º×飬ĬÈϵ±Ç°×é
logger£ºÓÃÓڼǼÈÕÖ¾£¬Í¨³£ÊÇlogging.Logger¶ÔÏó |
#½« /home/www/Downloads/test
ϵÄÎļþ´ò°ü·ÅÖõ±Ç°³ÌÐòĿ¼
import shutil
ret = shutil.make_archive("test", 'gztar',
root_dir='/home/www/Downloads/test')
```
#½«/home/www/Downloads/test ϵÄÎļþ´ò°ü·ÅÖà /home/www/Ŀ¼
import shutil
ret = shutil.make_archive("/home/www/test",
'gztar', root_dir='/home/www/Downloads/test') |
shutil ¶ÔѹËõ°üµÄ´¦ÀíÊǵ÷Óà ZipFile ºÍ TarFile Á½¸öÄ£¿éÀ´½øÐеģ¬Ïêϸ
zipfile ѹËõ½âѹ
import zipfile
# ѹËõ
z = zipfile.ZipFile('test.zip', 'w')
z.write('a.log')
z.write('data.data')
z.close()
# ½âѹ
z = zipfile.ZipFile('test.zip', 'r')
z.extractall()
z.close() |
tarfile ѹËõ½âѹ
import tarfile
# ѹËõ
tar = tarfile.open('test.tar','w')
tar.add('/home/www/bbs2.zip', arcname='bbs2.zip')
tar.add('/home/www/cmdb.zip', arcname='cmdb.zip')
tar.close()
# ½âѹ
tar = tarfile.open(test.tar','r')
tar.extractall() # ¿ÉÉèÖýâѹµØÖ·
tar.close() |
±¸×¢£º
1¡¢shutil.copymode(src, dst) µÄÔ´´úÂë
def copymode(src,
dst): """Copy mode bits from
src to dst"""
if hasattr(os, 'chmod'):
st = os.stat(src)
mode = stat.S_IMODE(st.st_mode)
os.chmod(dst, mode) |
6¡¢json & pickle Ä£¿é
ÓÃÓÚÐòÁл¯µÄÁ½¸öÄ£¿é
json£¬ÓÃÓÚ×Ö·û´® ºÍ pythonÊý¾ÝÀàÐͼä½øÐÐת»»
pickle£¬ÓÃÓÚpythonÌØÓеÄÀàÐÍ ºÍ pythonµÄÊý¾ÝÀàÐͼä½øÐÐת»»
jsonÄ£¿éÌṩÁËËĸö¹¦ÄÜ£ºdumps¡¢dump¡¢loads¡¢load
pickleÄ£¿éÌṩÁËËĸö¹¦ÄÜ£ºdumps¡¢dump¡¢loads¡¢load
import pickle
data = {'k1':123,'k2':'hello'}
#pickle.dumps ½«Êý¾Ýͨ¹ýÌØÊâµÄÐÎʽת»»ÎªÖ»ÓÐpythonÓïÑÔʶ±ðµÄ×Ö·û´®
p_str = pickle.dumps(data)
print(p_str)
#pickle.dump ½«Êý¾Ýͨ¹ýÌØÊâµÄÐÎʽת»»ÎªÖ»ÓÐpythonÓïÑÔʶ±ðµÄ×Ö·û´®£¬²¢Ð´ÈëÎļþ
with open('D:/result.pk','w') as fp:
pickle.dump(data,fp)
import json
#json.dumps ½«Êý¾Ýͨ¹ýÌØÊâµÄÐÎʽת»»ÎªËùÓгÌÐòÓïÑÔʶ±ðµÄ×Ö·û´®
j_str = json.dumps(data)
print(j_str)
#json.dump ½«Êý¾Ýͨ¹ýÌØÊâµÄÐÎʽת»»ÎªËùÓгÌÐòÓïÑÔʶ±ðµÄ×Ö·û´®£¬²¢Ð´ÈëÎļþ
with open('D:/result.json','w') as fp:
json.dump(data,fp) |
7¡¢shelve Ä£¿é
shelveÄ£¿éÊÇÒ»¸ö¼òµ¥µÄk,v½«ÄÚ´æÊý¾Ýͨ¹ýÎļþ³Ö¾Ã»¯µÄÄ£¿é£¬¿ÉÒԳ־û¯ÈκÎpickle¿ÉÖ§³ÖµÄpythonÊý¾Ý¸ñʽ
import shelve
d = shelve.open('shelve_test') #´ò¿ªÒ»¸öÎļþ
class Test(object):
def __init__(self,n):
self.n = n
t = Test(123)
t2 = Test(123334)
name = ["alex","rain","test"]
d["test"] = name #³Ö¾Ã»¯Áбí
d["t1"] = t #³Ö¾Ã»¯Àà
d["t2"] = t2
d.close() |
8¡¢xml´¦ÀíÄ£¿é
xmlÊÇʵÏÖ²»Í¬ÓïÑÔ»ò³ÌÐòÖ®¼ä½øÐÐÊý¾Ý½»»»µÄÐÒ飬¸újson²î²»¶à£¬µ«jsonʹÓÃÆðÀ´¸ü¼òµ¥£¬²»¹ý£¬ÔÚjson»¹Ã»µ®ÉúµÄºÚ°µÄê´ú£¬´ó¼ÒÖ»ÄÜÑ¡ÔñÓÃxmlѽ£¬ÖÁ½ñºÜ¶à´«Í³¹«Ë¾Èç½ðÈÚÐÐÒµµÄºÜ¶àϵͳµÄ½Ó¿Ú»¹Ö÷ÒªÊÇxml¡£
xmlµÄ¸ñʽÈçÏ£¬¾ÍÊÇͨ¹ý<>½ÚµãÀ´Çø±ðÊý¾Ý½á¹¹µÄ:
<?xml version="1.0"?>
<data> <country name="Liechtenstein">
<rank updated="yes">2</rank>
<year>2008</year> <gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country> <country name="Singapore">
<rank updated="yes">5</rank>
<year>2011</year> <gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country> <country name="Panama">
<rank updated="yes">69</rank>
<year>2011</year> <gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data> |
(1)½âÎöXML
¢ÙÀûÓÃElementTree.XML½«×Ö·û´®½âÎö³Éxml¶ÔÏó
from xml.etree import ElementTree as ET
# ´ò¿ªÎļþ£¬¶ÁÈ¡XMLÄÚÈÝ
str_xml = open('xo.xml', 'r').read()
# ½«×Ö·û´®½âÎö³ÉxmlÌØÊâ¶ÔÏó£¬root´úÖ¸xmlÎļþµÄ¸ù½Úµã
root = ET.XML(str_xml)
¢ÚÀûÓÃElementTree.parse½«ÎļþÖ±½Ó½âÎö³Éxml¶ÔÏó
from xml.etree import ElementTree as ET
# Ö±½Ó½âÎöxmlÎļþ
tree = ET.parse("xo.xml")
# »ñÈ¡xmlÎļþµÄ¸ù½Úµã
root = tree.getroot() |
(2)²Ù×÷XML
XML¸ñʽÀàÐÍÊǽڵãǶÌ׽ڵ㣬¶ÔÓÚÿһ¸ö½Úµã¾ùÓÐÒÔϹ¦ÄÜ£¬ÒÔ±ã¶Ôµ±Ç°½Úµã½øÐвÙ×÷
ÓÉÓÚ Ã¿¸ö½Úµã ¶¼¾ßÓÐÒÔÉϵķ½·¨£¬²¢ÇÒÔÚÉÏÒ»²½ÖèÖнâÎöʱ¾ùµÃµ½ÁËroot£¨xmlÎļþµÄ¸ù½Úµã£©,¿ÉÒÔÀûÓÃÒÔÉÏ·½·¨½øÐвÙ×÷xmlÎļþ¡£
a¡¢±éÀúXMLÎĵµµÄËùÓÐÄÚÈÝ
from xml.etree
import ElementTree as ET
############ ½âÎö·½Ê½Ò» ############
# ´ò¿ªÎļþ£¬¶ÁÈ¡XMLÄÚÈÝ
str_xml = open('xo.xml', 'r').read()
# ½«×Ö·û´®½âÎö³ÉxmlÌØÊâ¶ÔÏó£¬root´úÖ¸xmlÎļþµÄ¸ù½Úµã
root = ET.XML(str_xml)
############ ½âÎö·½Ê½¶þ ############
# Ö±½Ó½âÎöxmlÎļþ
#tree = ET.parse("xo.xml")
# »ñÈ¡xmlÎļþµÄ¸ù½Úµã
#root = tree.getroot()
### ²Ù×÷
# ¶¥²ã±êÇ©print(root.tag)
# ±éÀúXMLÎĵµµÄµÚ¶þ²ãfor child in root:
# µÚ¶þ²ã½ÚµãµÄ±êÇ©Ãû³ÆºÍ±êÇ©ÊôÐÔ
print(child.tag, child.attrib)
# ±éÀúXMLÎĵµµÄµÚÈý²ã
for i in child:
# µÚ¶þ²ã½ÚµãµÄ±êÇ©Ãû³ÆºÍÄÚÈÝ
print(i.tag,i.text) |
b¡¢±éÀúXMLÖÐÖ¸¶¨µÄ½Úµã
from xml.etree
import ElementTree as ET
############ ½âÎö·½Ê½Ò» ############
# ´ò¿ªÎļþ£¬¶ÁÈ¡XMLÄÚÈÝ
#str_xml = open('xo.xml', 'r').read()
# ½«×Ö·û´®½âÎö³ÉxmlÌØÊâ¶ÔÏó£¬root´úÖ¸xmlÎļþµÄ¸ù½Úµã
#root = ET.XML(str_xml)
############ ½âÎö·½Ê½¶þ ############
# Ö±½Ó½âÎöxmlÎļþ
tree = ET.parse("xo.xml")
# »ñÈ¡xmlÎļþµÄ¸ù½Úµã
root = tree.getroot()
### ²Ù×÷
# ¶¥²ã±êÇ© print(root.tag)
# ±éÀúXMLÖÐËùÓеÄyear½Úµãfor node in root.iter('year'):
# ½ÚµãµÄ±êÇ©Ãû³ÆºÍÄÚÈÝ
print(node.tag, node.text) |
c¡¢Ð޸ĽڵãÄÚÈÝ
ÓÉÓÚÐ޸ĵĽڵãʱ£¬¾ùÊÇÔÚÄÚ´æÖнøÐУ¬Æä²»»áÓ°ÏìÎļþÖеÄÄÚÈÝ¡£ËùÒÔ£¬Èç¹ûÏëÒªÐ޸ģ¬ÔòÐèÒªÖØн«ÄÚ´æÖеÄÄÚÈÝдµ½Îļþ¡£
¢Ù½âÎö×Ö·û´®·½Ê½£¬Ð޸ģ¬±£´æ
from xml.etree
import ElementTree as ET
############ ½âÎö·½Ê½Ò» ############
# ´ò¿ªÎļþ£¬¶ÁÈ¡XMLÄÚÈÝ
str_xml = open('xo.xml', 'r').read()
# ½«×Ö·û´®½âÎö³ÉxmlÌØÊâ¶ÔÏó£¬root´úÖ¸xmlÎļþµÄ¸ù½Úµã
root = ET.XML(str_xml)
############ ²Ù×÷ ############
# ¶¥²ã±êÇ©print(root.tag)
# Ñ»·ËùÓеÄyear½Úµãfor node in root.iter('year'):
# ½«year½ÚµãÖеÄÄÚÈÝ×ÔÔöÒ»
new_year = int(node.text) + 1
node.text = str(new_year)
# ÉèÖÃÊôÐÔ
node.set('name', 'alex')
node.set('age', '18')
# ɾ³ýÊôÐÔ
del node.attrib['name']
############ ±£´æÎļþ ############
tree = ET.ElementTree(root)
tree.write("newnew.xml", encoding='utf-8') |
¢Ú½âÎöÎļþ·½Ê½£¬Ð޸ģ¬±£´æ
from xml.etree
import ElementTree as ET
############ ½âÎö·½Ê½¶þ ############
# Ö±½Ó½âÎöxmlÎļþ
tree = ET.parse("xo.xml")
# »ñÈ¡xmlÎļþµÄ¸ù½Úµã
root = tree.getroot()
############ ²Ù×÷ ############
# ¶¥²ã±êÇ©print(root.tag)
# Ñ»·ËùÓеÄyear½Úµãfor node in root.iter('year'):
# ½«year½ÚµãÖеÄÄÚÈÝ×ÔÔöÒ»
new_year = int(node.text) + 1
node.text = str(new_year)
# ÉèÖÃÊôÐÔ
node.set('name', 'alex')
node.set('age', '18')
# ɾ³ýÊôÐÔ
del node.attrib['name']
############ ±£´æÎļþ ############
tree.write("newnew.xml", encoding='utf-8') |
d¡¢É¾³ý½Úµã
¢Ù½âÎö×Ö·û´®·½Ê½´ò¿ª£¬É¾³ý£¬±£´æ
from xml.etree
import ElementTree as ET
############ ½âÎö×Ö·û´®·½Ê½´ò¿ª ############
# ´ò¿ªÎļþ£¬¶ÁÈ¡XMLÄÚÈÝ
str_xml = open('xo.xml', 'r').read()
# ½«×Ö·û´®½âÎö³ÉxmlÌØÊâ¶ÔÏó£¬root´úÖ¸xmlÎļþµÄ¸ù½Úµã
root = ET.XML(str_xml)
############ ²Ù×÷ ############
# ¶¥²ã±êÇ©print(root.tag)
# ±éÀúdataϵÄËùÓÐcountry½Úµãfor country in root.findall('country'):
# »ñȡÿһ¸öcountry½ÚµãÏÂrank½ÚµãµÄÄÚÈÝ
rank = int(country.find('rank').text)
if rank > 50:
# ɾ³ýÖ¸¶¨country½Úµã root.remove(country)
############ ±£´æÎļþ ############
tree = ET.ElementTree(root)
tree.write("newnew.xml", encoding='utf-8') |
¢Ú½âÎöÎļþ·½Ê½´ò¿ª£¬É¾³ý£¬±£´æ
from xml.etree
import ElementTree as ET
############ ½âÎöÎļþ·½Ê½ ############
# Ö±½Ó½âÎöxmlÎļþ
tree = ET.parse("xo.xml")
# »ñÈ¡xmlÎļþµÄ¸ù½Úµã
root = tree.getroot()
############ ²Ù×÷ ############
# ¶¥²ã±êÇ©print(root.tag)
# ±éÀúdataϵÄËùÓÐcountry½Úµãfor country in root.findall('country'):
# »ñȡÿһ¸öcountry½ÚµãÏÂrank½ÚµãµÄÄÚÈÝ
rank = int(country.find('rank').text)
if rank > 50:
# ɾ³ýÖ¸¶¨country½Úµã root.remove(country)
############ ±£´æÎļþ ############
tree.write("newnew.xml", encoding='utf-8') |
(3)´´½¨XMLÎĵµ
a¡¢·½Ê½£¨Ò»£©
from xml.etree
import ElementTree as ET
# ´´½¨¸ù½Úµã
root = ET.Element("famliy")
# ´´½¨½Úµã´ó¶ù×Ó
son1 = ET.Element('son', {'name': '¶ù1'})# ´´½¨Ð¡¶ù×Ó
son2 = ET.Element('son', {"name": '¶ù2'})
# ÔÚ´ó¶ù×ÓÖд´½¨Á½¸öËï×Ó
grandson1 = ET.Element('grandson', {'name': '¶ù11'})
grandson2 = ET.Element('grandson', {'name': '¶ù12'})
son1.append(grandson1)
son1.append(grandson2)
# °Ñ¶ù×ÓÌí¼Óµ½¸ù½ÚµãÖÐroot.append(son1)
root.append(son1)
tree = ET.ElementTree(root)
tree.write('oooo.xml',encoding='utf-8', short_empty_elements=False) |
b¡¢´´½¨·½Ê½£¨¶þ£©
from xml.etree
import ElementTree as ET
# ´´½¨¸ù½Úµã
root = ET.Element("famliy")
# ´´½¨´ó¶ù×Ó
# son1 = ET.Element('son', {'name': '¶ù1'})
son1 = root.makeelement('son', {'name': '¶ù1'})#
´´½¨Ð¡¶ù×Ó
# son2 = ET.Element('son', {"name":
'¶ù2'})
son2 = root.makeelement('son', {"name":
'¶ù2'})
# ÔÚ´ó¶ù×ÓÖд´½¨Á½¸öËï×Ó
# grandson1 = ET.Element('grandson', {'name':
'¶ù11'})
grandson1 = son1.makeelement('grandson', {'name':
'¶ù11'})# grandson2 = ET.Element('grandson',
{'name': '¶ù12'})
grandson2 = son1.makeelement('grandson', {'name':
'¶ù12'})
son1.append(grandson1)
son1.append(grandson2)
# °Ñ¶ù×ÓÌí¼Óµ½¸ù½ÚµãÖÐroot.append(son1)
root.append(son1)
tree = ET.ElementTree(root)
tree.write('oooo.xml',encoding='utf-8', short_empty_elements=False) |
c¡¢´´½¨·½Ê½£¨Èý£©
from xml.etree
import ElementTree as ET
# ´´½¨¸ù½Úµã
root = ET.Element("famliy")
# ´´½¨½Úµã´ó¶ù×Ó
son1 = ET.SubElement(root, "son", attrib={'name':
'¶ù1'})# ´´½¨Ð¡¶ù×Ó
son2 = ET.SubElement(root, "son", attrib={"name":
"¶ù2"})
# ÔÚ´ó¶ù×ÓÖд´½¨Ò»¸öËï×Ó
grandson1 = ET.SubElement(son1, "age",
attrib={'name': '¶ù11'})
grandson1.text = 'Ëï×Ó'
et = ET.ElementTree(root) #Éú³ÉÎĵµ¶ÔÏó
et.write("test.xml", encoding="utf-8",
xml_declaration=True, short_empty_elements=False) |
d¡¢ÓÉÓÚÔÉú±£´æµÄXMLʱĬÈÏÎÞËõ½ø£¬Èç¹ûÏëÒªÉèÖÃËõ½øµÄ»°£¬ ÐèÒªÐ޸ı£´æ·½Ê½£º
from xml.etree
import ElementTree as ETfrom xml.dom import minidom
def prettify(elem):
"""½«½Úµãת»»³É×Ö·û´®£¬²¢Ìí¼ÓËõ½ø¡£
"""
rough_string = ET.tostring(elem, 'utf-8')
reparsed = minidom.parseString(rough_string)
return reparsed.toprettyxml(indent="\t")
# ´´½¨¸ù½Úµã
root = ET.Element("famliy")
# ´´½¨´ó¶ù×Ó
# son1 = ET.Element('son', {'name': '¶ù1'})
son1 = root.makeelement('son', {'name': '¶ù1'})#
´´½¨Ð¡¶ù×Ó
# son2 = ET.Element('son', {"name":
'¶ù2'})
son2 = root.makeelement('son', {"name":
'¶ù2'})
# ÔÚ´ó¶ù×ÓÖд´½¨Á½¸öËï×Ó
# grandson1 = ET.Element('grandson', {'name':
'¶ù11'})
grandson1 = son1.makeelement('grandson', {'name':
'¶ù11'})# grandson2 = ET.Element('grandson',
{'name': '¶ù12'})
grandson2 = son1.makeelement('grandson', {'name':
'¶ù12'})
son1.append(grandson1)
son1.append(grandson2)
# °Ñ¶ù×ÓÌí¼Óµ½¸ù½ÚµãÖÐroot.append(son1)
root.append(son1)
raw_str = prettify(root)
f = open("xxxoo.xml",'w',encoding='utf-8')
f.write(raw_str)
f.close() |
(4)ÃüÃû¿Õ¼ä
from xml.etree
import ElementTree as ET
ET.register_namespace('com',"http://www.company.com")
#some name
# build a tree structure
root = ET.Element("{http://www.company.com}STUFF")
body = ET.SubElement(root, "{http://www.company.com}MORE_STUFF",
attrib={"{http://www.company.com}hhh":
"123"})
body.text = "STUFF EVERYWHERE!"
# wrap it in an ElementTree instance, and save
as XML
tree = ET.ElementTree(root)
tree.write("page.xml",
xml_declaration=True,
encoding='utf-8',
method="xml") |
(5)±È½ÏÇå³þµÄ²Ù×÷¡¡¡¡
import xml.etree.ElementTree
as ET
tree = ET.parse("xmltest.xml")
root = tree.getroot()
print(root.tag)
#±éÀúxmlÎĵµ
for child in root:
print(child.tag, child.attrib)
for i in child:
print(i.tag,i.text)
#Ö»±éÀúyear ½Úµã
for node in root.iter('year'):
print(node.tag,node.text)
#Ð޸ĺÍɾ³ýxmlÎĵµÄÚÈÝ
import xml.etree.ElementTree as ET
tree = ET.parse("xmltest.xml")
root = tree.getroot()
#ÐÞ¸Ä
for node in root.iter('year'):
new_year = int(node.text) + 1
node.text = str(new_year)
node.set("updated","yes")
tree.write("xmltest.xml")
#ɾ³ýnode
for country in root.findall('country'):
rank = int(country.find('rank').text)
if rank > 50:
root.remove(country)
tree.write('output.xml')
#×Ô¼º´´½¨xmlÎĵµ
import xml.etree.ElementTree as ET
new_xml = ET.Element("namelist")
name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"})
age = ET.SubElement(name,"age",attrib={"checked":"no"})
sex = ET.SubElement(name,"sex")
sex.text = '33'
name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"})
age = ET.SubElement(name2,"age")
age.text = '19'
et = ET.ElementTree(new_xml) #Éú³ÉÎĵµ¶ÔÏó
et.write("test.xml", encoding="utf-8",xml_declaration=True)
ET.dump(new_xml) #´òÓ¡Éú³ÉµÄ¸ñʽ
|
9¡¢PyYAMLÄ£¿é
PythonÒ²¿ÉÒÔºÜÈÝÒ׵Ĵ¦ÀíymalÎĵµ¸ñʽ£¬Ö»²»¹ýÐèÒª°²×°Ò»¸öÄ£¿é£¬²Î¿¼Îĵµ£ºhttp://pyyaml.org/wiki/PyYAMLDocumentation
10¡¢configparserÄ£¿é
ÓÃÓÚÉú³ÉºÍÐ޸ij£¼ûÅäÖÃÎĵµ£¬µ±Ç°Ä£¿éµÄÃû³ÆÔÚ python 2.x °æ±¾ÖÐΪ ConfigParser¡£À´¿´Ò»¸öºÃ¶àÈí¼þµÄ³£¼ûÎĵµ¸ñʽÈçÏÂ
[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes
[bitbucket.org]
User = hg
[topsecret.server.com]
Port = 50022
ForwardX11 = no |
Èç¹ûÏëÓÃpythonÉú³ÉÒ»¸öÕâÑùµÄÎĵµÔõô×öÄØ
import configparser
config = configparser.ConfigParser()
config["DEFAULT"] = {'ServerAliveInterval':
'45',
'Compression': 'yes',
'CompressionLevel': '9'}
config['bitbucket.org'] = {}
config['bitbucket.org']['User'] = 'hg'
config['topsecret.server.com'] = {}
topsecret = config['topsecret.server.com']
topsecret['Host Port'] = '50022' # mutates the
parser
topsecret['ForwardX11'] = 'no' # same here
config['DEFAULT']['ForwardX11'] = 'yes'
with open('example.ini', 'w') as configfile:
config.write(configfile) |
дÍêÁË»¹¿ÉÒÔÔÙ¶Á³öÀ´
>>> import
configparser
>>> config = configparser.ConfigParser()
>>> config.sections()
[]
>>> config.read('example.ini')
['example.ini']
>>> config.sections()
['bitbucket.org', 'topsecret.server.com']
>>> 'bitbucket.org' in config
True
>>> 'bytebong.com' in config
False
>>> config['bitbucket.org']['User']
'hg'
>>> config['DEFAULT']['Compression']
'yes'
>>> topsecret = config['topsecret.server.com']
>>> topsecret['ForwardX11']
'no'
>>> topsecret['Port']
'50022'
>>> for key in config['bitbucket.org']:
print(key)
...
user
compressionlevel
serveraliveinterval
compression
forwardx11
>>> config['bitbucket.org']['ForwardX11']
'yes' |
configparserÔöɾ¸Ä²éÓï·¨
[section1]
k1 = v1
k2:v2
[section2]
k1 = v1
import ConfigParser
config = ConfigParser.ConfigParser()
config.read('i.cfg')
# ########## ¶Á ##########
#secs = config.sections()
#print secs
#options = config.options('group2')
#print options
#item_list = config.items('group2')
#print item_list
#val = config.get('group1','key')
#val = config.getint('group1','key')
# ########## ¸Äд ##########
#sec = config.remove_section('group1')
#config.write(open('i.cfg', "w"))
#sec = config.has_section('wupeiqi')
#sec = config.add_section('wupeiqi')
#config.write(open('i.cfg', "w"))
#config.set('group2','k1',11111)
#config.write(open('i.cfg', "w"))
#config.remove_option('group2','age')
#config.write(open('i.cfg', "w")) |
11¡¢hashlibÄ£¿é
ÓÃÓÚ¼ÓÃÜÏà¹ØµÄ²Ù×÷£¬´úÌæÁËmd5Ä£¿éºÍshaÄ£¿é£¬Ö÷ÒªÌṩ SHA1, SHA224, SHA256,
SHA384, SHA512 £¬MD5 Ëã·¨
import hashlib
# ######## md5 ########
hash = hashlib.md5()
hash.update('admin')
print(hash.hexdigest())
# ######## sha1 ########
hash = hashlib.sha1()
hash.update('admin')
print(hash.hexdigest())
# ######## sha256 ########
hash = hashlib.sha256()
hash.update('admin')
print(hash.hexdigest())
# ######## sha384 ########
hash = hashlib.sha384()
hash.update('admin')
print(hash.hexdigest())
# ######## sha512 ########
hash = hashlib.sha512()
hash.update('admin')
print(hash.hexdigest()) |
ÒÔÉϼÓÃÜËã·¨ËäÈ»ÒÀÈ»·Ç³£À÷º¦£¬µ«Ê±ºò´æÔÚȱÏÝ£¬¼´£ºÍ¨¹ýײ¿â¿ÉÒÔ·´½â¡£ËùÒÔ£¬ÓбØÒª¶Ô¼ÓÃÜËã·¨ÖÐÌí¼Ó×Ô¶¨ÒåkeyÔÙÀ´×ö¼ÓÃÜ¡£
import hashlib
# ######## md5 ########
hash = hashlib.md5('898oaFs09f')
hash.update('admin')
print(hash.hexdigest()) |
»¹²»¹»µõ£¿python »¹ÓÐÒ»¸ö hmac Ä£¿é£¬ËüÄÚ²¿¶ÔÎÒÃÇ´´½¨ key ºÍ ÄÚÈÝ ÔÙ½øÐд¦ÀíÈ»ºóÔÙ¼ÓÃÜ
import hmac
h = hmac.new('wueiqi')
h.update('hellowo')
print(hash.hexdigest()) |
±¸×¢£ºÔÚpython3ÖУ¬¼ÓÃÜ×Ö·û´®ÐèÒª½«×Ö·û´®×ª»»ÎªbytesÀàÐÍ£¬×ª»»·½·¨
hash.update(b'admin')
»òÕß hash.update('admin'.encode('utf8')) |
12¡¢loggingÄ£¿é
ºÜ¶à³ÌÐò¶¼ÓмǼÈÕÖ¾µÄÐèÇ󣬲¢ÇÒÈÕÖ¾Öаüº¬µÄÐÅÏ¢¼´ÓÐÕý³£µÄ³ÌÐò·ÃÎÊÈÕÖ¾£¬»¹¿ÉÄÜÓдíÎó¡¢¾¯¸æµÈÐÅÏ¢Êä³ö£¬pythonµÄloggingÄ£¿éÌṩÁ˱ê×¼µÄÈÕÖ¾½Ó¿Ú£¬Äã¿ÉÒÔͨ¹ýËü´æ´¢¸÷ÖÖ¸ñʽµÄÈÕÖ¾£¬loggingµÄÈÕÖ¾¿ÉÒÔ·ÖΪ
debug(), info(), warning(), error() and critical()
5¸ö¼¶±ð£¬ÏÂÃæÎÒÃÇ¿´Ò»ÏÂÔõôÓá£
¢Ù×î¼òµ¥Ó÷¨
import logging
logging.warning("user [tom] attempted wrong
password more than 3 times")
logging.critical("server is down")
#Êä³ö
WARNING:root:user [tom] attempted wrong password
more than 3 times
CRITICAL:root:server is down |
¢ÚÈç¹ûÏë°ÑÈÕ־дµ½ÎļþÀï
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d]
%(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='test.log',
filemode='a')
logging.debug('This message should go to the
log file')
logging.info('So should this')
logging.warning('And this, too') |
ÆäÖÐÏÂÃæÕâ¾äÖеÄlevel=loggin.INFOÒâ˼ÊÇ£¬°ÑÈÕÖ¾¼Í¼¼¶±ðÉèÖÃΪINFO£¬Ò²¾ÍÊÇ˵£¬Ö»ÓбÈÈÕÖ¾ÊÇINFO»ò±ÈINFO¼¶±ð¸ü¸ßµÄÈÕÖ¾²Å»á±»¼Í¼µ½ÎļþÀÔÚÕâ¸öÀý×Ó£¬
µÚÒ»ÌõÈÕÖ¾ÊDz»»á±»¼Í¼µÄ£¬Èç¹ûÏ£Íû¼Í¼debugµÄÈÕÖ¾£¬ÄÇ°ÑÈÕÖ¾¼¶±ð¸Ä³ÉDEBUG¾ÍÐÐÁË¡£
logging.basicConfig (filename='example.log', level=logging.INFO) |
¶ÔÓÚ¸ñʽ£¬ÓÐÈçÏÂÊôÐÔ¿ÉÊÇÅäÖãº
logging.basicConfigº¯Êý¸÷²ÎÊý£º
filename: Ö¸¶¨ÈÕÖ¾ÎļþÃû
filemode: ºÍfileº¯ÊýÒâÒåÏàͬ£¬Ö¸¶¨ÈÕÖ¾ÎļþµÄ´ò¿ªÄ£Ê½£¬'w'»ò'a'
format: Ö¸¶¨Êä³öµÄ¸ñʽºÍÄÚÈÝ£¬format¿ÉÒÔÊä³öºÜ¶àÓÐÓÃÐÅÏ¢£¬ÈçÉÏÀýËùʾ:
%(levelno)s: ´òÓ¡ÈÕÖ¾¼¶±ðµÄÊýÖµ
%(levelname)s: ´òÓ¡ÈÕÖ¾¼¶±ðÃû³Æ
%(pathname)s: ´òÓ¡µ±Ç°Ö´ÐгÌÐòµÄ·¾¶£¬Æäʵ¾ÍÊÇsys.argv[0]
%(filename)s: ´òÓ¡µ±Ç°Ö´ÐгÌÐòÃû
%(funcName)s: ´òÓ¡ÈÕÖ¾µÄµ±Ç°º¯Êý
%(lineno)d: ´òÓ¡ÈÕÖ¾µÄµ±Ç°ÐкÅ
%(asctime)s: ´òÓ¡ÈÕÖ¾µÄʱ¼ä
%(thread)d: ´òÓ¡Ïß³ÌID
%(threadName)s: ´òÓ¡Ïß³ÌÃû³Æ
%(process)d: ´òÓ¡½ø³ÌID
%(message)s: ´òÓ¡ÈÕÖ¾ÐÅÏ¢
datefmt: Ö¸¶¨Ê±¼ä¸ñʽ£¬Í¬time.strftime()
level: ÉèÖÃÈÕÖ¾¼¶±ð£¬Ä¬ÈÏΪlogging.WARNING
stream: Ö¸¶¨½«ÈÕÖ¾µÄÊä³öÁ÷£¬¿ÉÒÔÖ¸¶¨Êä³öµ½sys.stderr,sys.stdout»òÕßÎļþ£¬Ä¬ÈÏÊä³öµ½sys.stderr£¬µ±streamºÍfilenameͬʱָ¶¨Ê±£¬stream±»ºöÂÔ |

¢Û½«ÈÕ־ͬʱÊä³öµ½ÎļþºÍÆÁÄ»(±È½ÏÁé»îµÄ·½Ê½)
import logging
logger = logging.getLogger() #´´½¨Ò»¸ölogger¶ÔÏó
fileoutput = logging.FileHandler('test.log') #´´½¨Ò»¸öhandler£¬ÓÃÓÚÊä³öµ½Îļþ
screenoutput = logging.StreamHandler() #´´½¨Ò»¸öhandler£¬ÓÃÓÚÊä³öµ½¿ØÖÆ̨
fmt = logging.Formatter(
'%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s
%(message)s'
) #Êä³ö¸ñʽ
fileoutput.setFormatter(fmt)
screenoutput.setFormatter(fmt)
logger.addHandler(fileoutput)
logger.addHandler(screenoutput)
logger.setLevel(logging.DEBUG) #ÉèÖÃÈÕÖ¾µÄ¼¶±ð
logging.debug('This message should go to the
log file')
logging.info('So should this')
logging.warning('And this, too')
ÆÁÄ»ÉÏ´òÓ¡:
2017-5-12 10:35:48 bbb.py[line:21] DEBUG This
message should go to the log file
2017-5-12 10:35:48 bbb.py[line:22] INFO So should
this
2017-5-12 10:35:48 bbb.py[line:23] WARNING And
this, too
test.logÎļþÖÐÄÚÈÝΪ:
2017-5-12 10:35:48 bbb.py[line:21] DEBUG This
message should go to the log file
2017-5-12 10:35:48 bbb.py[line:22] INFO So should
this
2017-5-12 10:35:48 bbb.py[line:23] WARNING And
this, too |
¢ÜloggingÖ®ÈÕÖ¾»Ø¹ö
import logging
from logging.handlers import RotatingFileHandler
#¶¨ÒåÒ»¸öRotatingFileHandler£¬×î¶à±¸·Ý5¸öÈÕÖ¾Îļþ£¬Ã¿¸öÈÕÖ¾Îļþ×î´ó10M
Rthandler = RotatingFileHandler('myapp.log', maxBytes=10*1024*1024,backupCount=5)
Rthandler.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s
%(message)s')
Rthandler.setFormatter(formatter)
logging.getLogger('').addHandler(Rthandler)
|
´ÓÉÏÀýºÍ±¾Àý¿ÉÒÔ¿´³ö£¬loggingÓÐÒ»¸öÈÕÖ¾´¦ÀíµÄÖ÷¶ÔÏó£¬ÆäËü´¦Àí·½Ê½¶¼ÊÇͨ¹ýaddHandlerÌí¼Ó½øÈ¥µÄ¡£
loggingµÄ¼¸ÖÖhandle·½Ê½ÈçÏ£º
logging.StreamHandler:
ÈÕÖ¾Êä³öµ½Á÷£¬¿ÉÒÔÊÇsys.stderr¡¢sys.stdout»òÕßÎļþ
logging.FileHandler: ÈÕÖ¾Êä³öµ½Îļþ
ÈÕÖ¾»Ø¹ö·½Ê½£¬Êµ¼ÊʹÓÃʱÓÃRotatingFileHandlerºÍTimedRotatingFileHandler
logging.handlers.BaseRotatingHandler
logging.handlers.RotatingFileHandler
logging.handlers.TimedRotatingFileHandler
logging.handlers.SocketHandler: Ô¶³ÌÊä³öÈÕÖ¾µ½TCP/IP
sockets
logging.handlers.DatagramHandler: Ô¶³ÌÊä³öÈÕÖ¾µ½UDP sockets
logging.handlers.SMTPHandler: Ô¶³ÌÊä³öÈÕÖ¾µ½ÓʼþµØÖ·
logging.handlers.SysLogHandler: ÈÕÖ¾Êä³öµ½syslog
logging.handlers.NTEventLogHandler: Ô¶³ÌÊä³öÈÕÖ¾µ½Windows
NT/2000/XPµÄʼþÈÕÖ¾
logging.handlers.MemoryHandler: ÈÕÖ¾Êä³öµ½ÄÚ´æÖеÄÖƶ¨buffer
logging.handlers.HTTPHandler: ͨ¹ý"GET"»ò"POST"Ô¶³ÌÊä³öµ½HTTP·þÎñÆ÷ |
¢Ýͨ¹ýlogging.configÄ£¿éÅäÖÃÈÕÖ¾
#logger.conf
###############################################
[loggers]
keys=root,example01,example02
[logger_root]
level=DEBUG
handlers=hand01,hand02
[logger_example01]
handlers=hand01,hand02
qualname=example01
propagate=0
[logger_example02]
handlers=hand01,hand03
qualname=example02
propagate=0
###############################################
[handlers]
keys=hand01,hand02,hand03
[handler_hand01]
class=StreamHandler
level=INFO
formatter=form02
args=(sys.stderr,)
[handler_hand02]
class=FileHandler
level=DEBUG
formatter=form01
args=('myapp.log', 'a')
[handler_hand03]
class=handlers.RotatingFileHandler
level=INFO
formatter=form02
args=('myapp.log', 'a', 10*1024*1024, 5)
###############################################
[formatters]
keys=form01,form02
[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d]
%(levelname)s %(message)s
datefmt=%a, %d %b %Y %H:%M:%S
[formatter_form02]
format=%(name)-12s: %(levelname)-8s %(message)s
datefmt= |
import logging
import logging.config
logging.config.fileConfig("logger.conf")
logger = logging.getLogger("example01")
logger.debug('This is debug message')
logger.info('This is info message')
logger.warning('This is warning message') |
¶ÔÓڵȼ¶£º
CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0 |
13¡¢reÄ£¿é
³£ÓÃÕýÔò±í´ïʽ·ûºÅ
'.' ĬÈÏÆ¥Åä³ý\nÖ®ÍâµÄÈÎÒâÒ»¸ö×Ö·û£¬ÈôÖ¸¶¨flag
DOTALL,ÔòÆ¥ÅäÈÎÒâ×Ö·û£¬°üÀ¨»»ÐÐ
'^' Æ¥Åä×Ö·û¿ªÍ·£¬ÈôÖ¸¶¨flags MULTILINE,ÕâÖÖÒ²¿ÉÒÔÆ¥ÅäÉÏ(r"^a","\nabc\neee",flags=re.MULTILINE)
'$' Æ¥Åä×Ö·û½á⣬»òe.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()Ò²¿ÉÒÔ
'*' Æ¥Åä*ºÅÇ°µÄ×Ö·û0´Î»ò¶à´Î(°üÀ¨0´Î)£¬re.findall("ab*","cabb3abcbbac")
½á¹ûΪ['abb', 'ab', 'a'] #Èç¹ûbΪ0´ÎÒ²¿ÉÒÔÆ¥Åäµ½
'+' Æ¥ÅäÇ°Ò»¸ö×Ö·û1´Î»ò¶à´Î(×îÉÙ1´Î)£¬re.findall("ab+","ab+cd+abb+bba")
½á¹û['ab', 'abb']
'?' Æ¥ÅäÇ°Ò»¸ö×Ö·û0´Î»ò1´Î
'{m}' Æ¥ÅäÇ°Ò»¸ö×Ö·ûm´Î
'{n,m}' Æ¥ÅäÇ°Ò»¸ö×Ö·ûnµ½m´Î£¬re.findall("ab{1,3}","abb
abc abbcbbb") ½á¹û'abb', 'ab', 'abb']
'|' Æ¥Åä|×ó»ò|ÓÒµÄ×Ö·û£¬re.search("abc|ABC","ABCBabcCD").group()
½á¹û'ABC'
'(...)' ·Ö×éÆ¥Å䣬re.search("(abc){2}a(123|456)c",
"abcabca456c").group() ½á¹û abcabca456c
'\A' Ö»´Ó×Ö·û¿ªÍ·Æ¥Å䣬re.search("\Aabc","alexabc")
ÊÇÆ¥Åä²»µ½µÄ
'\Z' Æ¥Åä×Ö·û½áβ£¬Í¬$
'\d' Æ¥ÅäÊý×Ö0-9
'\D' Æ¥Åä·ÇÊý×Ö
'\w' Æ¥Åä[A-Za-z0-9]
'\W' Æ¥Åä·Ç[A-Za-z0-9]
'\s' Æ¥Åä¿Õ°××Ö·û¡¢\t¡¢\n¡¢\r , re.search("\s+","ab\tc1\n3").group()
½á¹û '\t'
'(?P<name>...)' ·Ö×éÆ¥Åä re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})","371481199306143242").groupdict("city")
½á¹û{'province': '3714', 'city': '81', 'birthday':
'1993'} |
#IP£º
^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$
#ÊÖ»úºÅ£º
^1[3|4|5|8][0-9]\d{8}$
import re
ret = re.search('(?P<id>\d{3})/(?P<name>\w{3})','negbhgao123/gna')
print(ret.group())
print(ret.group('id'))
print(ret.group('name')) |
×î³£ÓõÄÆ¥ÅäÓï·¨
re.match ´ÓÍ·¿ªÊ¼Æ¥Åä
re.search °üº¬Æ¥Åä
re.findall °ÑËùÓÐÆ¥Åäµ½µÄ×Ö·û·Åµ½ÒÔÁбíÖеÄÔªËØ·µ»Ø
re.splitall ÒÔÆ¥Åäµ½µÄ×Ö·ûµ±×öÁбí·Ö¸ô·û
re.sub Æ¥Åä×Ö·û²¢Ìæ»» |
·´Ð±¸ÜµÄÀ§ÈÅ
Óë´ó¶àÊý±à³ÌÓïÑÔÏàͬ£¬ÕýÔò±í´ïʽÀïʹÓÃ"\"×÷ΪתÒå×Ö·û£¬Õâ¾Í¿ÉÄÜÔì³É·´Ð±¸ÜÀ§ÈÅ¡£¼ÙÈçÄãÐèҪƥÅäÎı¾ÖеÄ×Ö·û"\"£¬ÄÇôʹÓñà³ÌÓïÑÔ±íʾµÄÕýÔò±í´ïʽÀォÐèÒª4¸ö·´Ð±¸Ü"\\\\"£ºÇ°Á½¸öºÍºóÁ½¸ö·Ö±ðÓÃÓÚÔÚ±à³ÌÓïÑÔÀïתÒå³É·´Ð±¸Ü£¬×ª»»³ÉÁ½¸ö·´Ð±¸ÜºóÔÙÔÚÕýÔò±í´ïʽÀïתÒå³ÉÒ»¸ö·´Ð±¸Ü¡£PythonÀïµÄÔÉú×Ö·û´®ºÜºÃµØ½â¾öÁËÕâ¸öÎÊÌ⣬Õâ¸öÀý×ÓÖеÄÕýÔò±í´ïʽ¿ÉÒÔʹÓÃr"\\"±íʾ¡£Í¬Ñù£¬Æ¥ÅäÒ»¸öÊý×ÖµÄ"\\d"¿ÉÒÔд³Ér"\d"¡£ÓÐÁËÔÉú×Ö·û´®£¬ÄãÔÙÒ²²»Óõ£ÐÄÊDz»ÊÇ©дÁË·´Ð±¸Ü£¬Ð´³öÀ´µÄ±í´ïʽҲ¸üÖ±¹Û¡£ |
ÇáÇáÖªµÀµÄ¼¸¸öÆ¥Åäģʽ
re.I(re.IGNORECASE):
ºöÂÔ´óСд£¨À¨ºÅÄÚÊÇÍêÕûд·¨£¬ÏÂͬ£©
M(MULTILINE): ¶àÐÐģʽ£¬¸Ä±ä'^'ºÍ'$'µÄÐÐΪ
S(DOTALL): µãÈÎÒâÆ¥Åäģʽ£¬¸Ä±ä'.'µÄÐÐΪ |
±¸×¢£º
1¡¢match(pattern, string, flags=0) ´ÓÆðʼλÖÿªÊ¼¸ù¾ÝÄ£ÐÍÈ¥×Ö·û´®ÖÐÆ¥ÅäÖ¸¶¨ÄÚÈÝ£¬Æ¥Åäµ¥¸ö
ÕýÔò±í´ïʽ
ҪƥÅäµÄ×Ö·û´®
±ê־룬ÓÃÓÚ¿ØÖÆÕýÔò±í´ïʽµÄÆ¥Å䷽ʽ
import re
obj = re.match('\d+', '123uuasf')
if obj:
print(obj.group()) |
2¡¢search(pattern, string, flags=0) ¸ù¾ÝÄ£ÐÍÈ¥×Ö·û´®ÖÐÆ¥ÅäÖ¸¶¨ÄÚÈÝ£¬Æ¥Åäµ¥¸ö
import re
obj = re.search('\d+', 'u123uu888asf')
if obj:
print(obj.group() |
3¡¢groupºÍgroups
a = "123abc456"
print(re.search("([0-9]*)([a-z]*)([0-9]*)",
a).group())
print(re.search("([0-9]*)([a-z]*)([0-9]*)",
a).group(0))
print(re.search("([0-9]*)([a-z]*)([0-9]*)",
a).group(1))
print(re.search("([0-9]*)([a-z]*)([0-9]*)",
a).group(2))
print(re.search("([0-9]*)([a-z]*)([0-9]*)",
a).groups()) |
4¡¢findall(pattern, string, flags=0)
ÉÏÊöÁ½Öз½Ê½¾ùÓÃÓÚÆ¥Åäµ¥Öµ£¬¼´£ºÖ»ÄÜÆ¥Åä×Ö·û´®ÖеÄÒ»¸ö£¬Èç¹ûÏëҪƥÅäµ½×Ö·û´®ÖÐËùÓзûºÏÌõ¼þµÄÔªËØ£¬ÔòÐèҪʹÓÃ
findall¡£
import re
obj = re.findall('\d+', 'fa123uu888asf')
print(obj) |
5¡¢sub(pattern, repl, string, count=0, flags=0)
ÓÃÓÚÌ滻ƥÅäµÄ×Ö·û´®
content = "123abc456"
new_content = re.sub('\d+', 'sb', content)
# new_content = re.sub('\d+', 'sb', content, 1)
print(new_content) |
Ïà±ÈÓÚstr.replace¹¦Äܸü¼ÓÇ¿´ó
6¡¢split(pattern, string, maxsplit=0, flags=0) ¸ù¾ÝÖ¸¶¨Æ¥Åä½øÐзÖ×é
content = "'1
- 2 * ((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2)
)'"
new_content = re.split('\*', content)
# new_content = re.split('\*', content, 1)
print(new_content) |
content = "'1
- 2 * ((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2)
)'"
new_content = re.split('[\+\-\*\/]+', content)
# new_content = re.split('\*', content, 1)
print(new_content) |
inpp = '1-2*((60-30
+(-40-5)*(9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14
)) - (-4*3)/ (16-3*2))'
inpp = re.sub('\s*','',inpp)
new_content = re.split('\(([\+\-\*\/]?\d+[\+\-\*\/]?\d+){1}\)',
inpp, 1)
print(new_content) |
Ïà±ÈÓÚstr.split¸ü¼ÓÇ¿´ó
7¡¢Æ¥ÅäurlµØÖ·
res = re.findall('www.(?:\w+).com','www.baidu.com')
print(res) #['www.baidu.com'] |
14¡¢paramiko
paramikoÊÇÒ»¸öÓÃÓÚ×öÔ¶³Ì¿ØÖƵÄÄ£¿é£¬Ê¹ÓøÃÄ£¿é¿ÉÒÔ¶ÔÔ¶³Ì·þÎñÆ÷½øÐÐÃüÁî»òÎļþ²Ù×÷£¬ÖµµÃһ˵µÄÊÇ£¬fabricºÍansibleÄÚ²¿µÄÔ¶³Ì¹ÜÀí¾ÍÊÇʹÓõÄparamikoÀ´ÏÖʵ¡£
(1)ÏÂÔØ°²×°
pycrypto£¬ÓÉÓÚ paramiko Ä£¿éÄÚ²¿ÒÀÀµpycrypto£¬ËùÒÔÏÈÏÂÔØ°²×°pycrypto
pip3 install pycrypto
pip3 install paramiko |
(2)Ä£¿éʹÓÃ
a¡¢Ö´ÐÐÃüÁî - Óû§Ãû+ÃÜÂë
#!/usr/bin/env
python
#coding:utf-8
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy (paramiko.AutoAddPolicy())
ssh.connect (hostname='192.168.88.136', port=22, username='test', password='123')
stdin, stdout, stderr = ssh.exec_command('df
-h')
print(stdout.read())
ssh.close() |
b¡¢Ö´ÐÐÃüÁî - ÃÜÔ¿
import paramiko
private_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from _private_key_file (private_key_path)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy (paramiko.AutoAddPolicy())
ssh.connect (hostname='192.168.88.136', port=22,username= 'test', password=key)
stdin, stdout, stderr = ssh.exec_command('df
-h')
print(stdout.read())
ssh.close() |
c¡¢ÉÏ´«»òÏÂÔØÎļþ - Óû§Ãû+ÃÜÂë
#ÉÏ´«
import os,sysimport paramiko
t = paramiko.Transport(('192.168.88.136',22))
t.connect(username='test',password='123')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test1.py','/tmp/test2.py')
t.close()
#ÏÂÔØ
import os,sysimport paramiko
t = paramiko.Transport(('192.168.88.136',22))
t.connect(username='test',password='123')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test1.py','/tmp/test2.py')
t.close() |
d¡¢ÉÏ´«»òÏÂÔØÎļþ - ÃÜÔ¿
#ÉÏ´«
import paramiko
pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
t = paramiko.Transport(('192.168.88.136',22))
t.connect(username='wupeiqi',pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test3.py','/tmp/test4.py')
t.close()
#ÏÂÔØ
import paramiko
pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
t = paramiko.Transport(('192.168.88.136',22))
t.connect(username='test',pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test3.py','/tmp/test4.py')
t.close() |
15¡¢requests
Python±ê×¼¿âÖÐÌṩÁË£ºurllibµÈÄ£¿éÒÔ¹©HttpÇëÇ󣬵«ÊÇ£¬ËüµÄ API Ì«ÔüÁË¡£ËüÊÇΪÁíÒ»¸öʱ´ú¡¢ÁíÒ»¸ö»¥ÁªÍøËù´´½¨µÄ¡£ËüÐèÒª¾ÞÁ¿µÄ¹¤×÷£¬ÉõÖÁ°üÀ¨¸÷ÖÖ·½·¨¸²¸Ç£¬À´Íê³É×î¼òµ¥µÄÈÎÎñ¡£
(1)·¢ËÍGETÇëÇó
import urllib.request
f = urllib.request.urlopen('http:// www.webxml.com.cn// webservices/ qqOnlineWebService.asmx/ qqCheckOnline? qqCode=424662508')
result = f.read().decode('utf-8') |
(2)·¢ËÍЯ´øÇëÇóÍ·µÄGETÇëÇó
import urllib.request
req = urllib.request.Request('http://www.example.com/')
req.add_header('Referer', 'http://www.python.org/')
r = urllib.request.urlopen(req)
result = f.read().decode('utf-8') |
±¸×¢£º
¸ü¶à¼ûPython¹Ù·½Îĵµ£ºhttps://docs.python.org/3.5/library/urllib.request.html#module-urllib.request
Requests ÊÇʹÓà Apache2 Licensed Ðí¿ÉÖ¤µÄ »ùÓÚPython¿ª·¢µÄHTTP
¿â£¬ÆäÔÚPythonÄÚÖÃÄ£¿éµÄ»ù´¡ÉϽøÐÐÁ˸߶ȵķâ×°£¬´Ó¶øʹµÃPythoner½øÐÐÍøÂçÇëÇóʱ£¬±äµÃÃÀºÃÁËÐí¶à£¬Ê¹ÓÃRequests¿ÉÒÔÇá¶øÒ×¾ÙµÄÍê³Éä¯ÀÀÆ÷¿ÉÓеÄÈκβÙ×÷¡£
(1)°²×°Ä£¿é
(2)ʹÓÃÄ£¿é
a¡¢GETÇëÇó
¢ÙÎÞ²ÎÊýʵÀý
import requests
ret = requests.get('https://github.com/timeline.json')
print(ret.url)
print(ret.text)
¢ÚÓвÎÊýʵÀý
import requests
payload = {'key1': 'value1', 'key2': 'value2'}
ret = requests.get("http://httpbin.org/get",
params=payload)
print(ret.url)
print(ret.text) |
b¡¢POSTÇëÇó
¢Ù»ù±¾POSTʵÀý
import requests
payload = {'key1': 'value1', 'key2': 'value2'}
ret = requests.post("http://httpbin.org/post",
data=payload)
print(ret.text)
¢Ú·¢ËÍÇëÇóÍ·ºÍÊý¾ÝʵÀý
import requests
import json
url = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}
headers = {'content-type': 'application/json'}
ret = requests.post(url, data=json.dumps(payload),
headers=headers)
print(ret.text)
print(ret.cookies) |
c¡¢ÆäËûÇëÇó
requests.get(url,
params=None, **kwargs)
requests.post(url, data=None, json=None, **kwargs)
requests.put(url, data=None, **kwargs)
requests.head(url, **kwargs)
requests.delete(url, **kwargs)
requests.patch(url, data=None, **kwargs)
requests.options(url, **kwargs) |
±¸×¢£º
ÒÔÉÏ·½·¨¾ùÊÇÔÚ´Ë·½·¨µÄ»ù´¡ÉϹ¹½¨ requests.request(method, url, **kwargs)
¸ü¶àrequestsÄ£¿éÏà¹ØµÄÎĵµ¼û£ºhttp://cn.python-requests.org/zh_CN/latest/
(3)HttpÇëÇóºÍXMLʵÀý
ʵÀý1£º¼ì²âQQÕ˺ÅÊÇ·ñÔÚÏß
import urllib
import requests
from xml.etree import ElementTree as ET
# ʹÓÃÄÚÖÃÄ£¿éurllib·¢ËÍHTTPÇëÇ󣬻òÕßXML¸ñʽÄÚÈÝ"""
f = urllib.request.urlopen('http://www.webxml.com.cn//
webservices/qqOnlineWebService.asmx/ qqCheckOnline? qqCode=424662508')
result = f.read().decode('utf-8')
# ʹÓõÚÈý·½Ä£¿érequests·¢ËÍHTTPÇëÇ󣬻òÕßXML¸ñʽÄÚÈÝ
r = requests.get('http://www.webxml.com.cn //webservices/
qqOnlineWebService.asmx/ qqCheckOnline? qqCode=424662508')
result = r.text
# ½âÎöXML¸ñʽÄÚÈÝ
node = ET.XML(result)
# »ñÈ¡ÄÚÈÝ
if node.text == "Y":
print("ÔÚÏß")
else:
print("ÀëÏß") |
ʵÀý2£º²é¿´»ð³µÍ£¿¿ÐÅÏ¢
import urllib
import requests
from xml.etree import ElementTree as ET
# ʹÓÃÄÚÖÃÄ£¿éurllib·¢ËÍHTTPÇëÇ󣬻òÕßXML¸ñʽÄÚÈÝ
f = urllib.request.urlopen ('http://www.webxml.com.cn/ WebServices
/TrainTimeWebService.asmx / getDetailInfoByTrainCode?
TrainCode= G666&UserID=')
result = f.read().decode()
# ʹÓõÚÈý·½Ä£¿érequests·¢ËÍHTTPÇëÇ󣬻òÕßXML¸ñʽÄÚÈÝ
r = requests.get ('http://www.webxml.com.cn/
WebServices/ TrainTimeWebService.asmx/ getDetailInfoByTrainCode?
TrainCode =G666&UserID=')
result = r.text
# ½âÎöXML¸ñʽÄÚÈÝ
root = ET.XML(result)
for node in root.iter ('TrainDetailInfo'):
print(node.find ('TrainStation').text, node.find('StartTime').text, node.tag,node.attrib) |
16¡¢subprocess
(1)call #Ö´ÐÐÃüÁ·µ»Ø״̬Âë
subprocess.call("ls
-l", shell=False)
subprocess.call("ls -l", shell=True) |
(2)check_call #Ö´ÐÐÃüÁÈç¹ûÖ´ÐÐ״̬ÂëÊÇ 0 £¬Ôò·µ»Ø0£¬·ñÔòÅ×Òì³£
subprocess.check_call("ls
-l")
subprocess.check_call("ls -l", shell=True) |
(3)check_output #Ö´ÐÐÃüÁÈç¹û״̬ÂëÊÇ 0 £¬Ôò·µ»ØÖ´Ðнá¹û£¬·ñÔòÅ×Òì³£
subprocess.check_output(["echo",
"Hello World!"])
subprocess.check_output("ls -l", shell=True) |
(4)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 -> ͬÒâʹÓÃ
startupinfoÓëcreateionflagsÖ»ÔÚwindowsÏÂÓÐЧ,½«±»´«µÝ¸øµ×²ãµÄCreateProcess()º¯Êý£¬ÓÃÓÚÉèÖÃ×Ó½ø³ÌµÄһЩÊôÐÔ£¬È磺Ö÷´°¿ÚµÄÍâ¹Û£¬½ø³ÌµÄÓÅÏȼ¶µÈµÈ
|
a¡¢Ö´ÐÐÆÕͨÃüÁî
import subprocess
ret1 = subprocess.Popen(["mkdir","t1"])
ret2 = subprocess.Popen("mkdir t2",
shell=True) |
b¡¢ÖÕ¶ËÊäÈëµÄÃüÁî·ÖΪÁ½ÖÖ£º
ÊäÈë¼´¿ÉµÃµ½Êä³ö£¬È磺ifconfig
ÊäÈë½øÐÐij»·¾³£¬ÒÀÀµÔÙÊäÈ룬È磺python
import subprocess
obj = subprocess.Popen("mkdir test",
shell=True, cwd='/home/',) |
import subprocess
obj = subprocess.Popen(["python"], stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
universal_newlines=True)
obj.stdin.write("print(1)\n")
obj.stdin.write("print(2)")
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, universal_newlines=True)
obj.stdin.write("print(1)\n")
obj.stdin.write("print(2)")
out_error_list = obj.communicate()
print(out_error_list) |
import subprocess
obj = subprocess.Popen(["python"], stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
universal_newlines=True)
out_error_list = obj.communicate('print("hello")')
print(out_error_list) |
|