python ÃüÁîÐвÎÊý
±¾Æª½«½éÉÜpythonÖÐsys, getoptÄ£¿é´¦ÀíÃüÁîÐвÎÊý
Èç¹ûÏë¶Ôpython½Å±¾´«²ÎÊý£¬pythonÖжÔÓ¦µÄargc, argv(cÓïÑÔµÄÃüÁîÐвÎÊý)ÊÇÊ²Ã´ÄØ£¿
ÐèҪģ¿é£ºsys
²ÎÊý¸öÊý£ºlen(sys.argv)
½Å±¾Ãû£º sys.argv[0]
²ÎÊý1£º sys.argv[1]
²ÎÊý2£º sys.argv[2]
test.py
1
import sys
2
print "½Å±¾Ãû£º", sys.argv[0]
3
for i in range(1, len(sys.argv)):
4
print "²ÎÊý", i, sys.argv[i]
>>>python test.py hello world
½Å±¾Ãû£ºtest.py
²ÎÊý 1 hello
²ÎÊý 2 world
pythonÖÐʹÓÃÃüÁîÐÐÑ¡Ï
ÀýÈçÎÒÃÇÐèÒªÒ»¸öconvert.py½Å±¾¡£ËüµÄ×÷ÓÃÊÇ´¦ÀíÒ»¸öÎļþ,²¢½«´¦ÀíºóµÄ½á¹ûÊä³öµ½ÁíÒ»¸öÎļþÖС£
ÒªÇó¸Ã½Å±¾Âú×ãÒÔÏÂÌõ¼þ£º
1.ͨ¹ý-i -oÑ¡ÏîÀ´Çø±ð²ÎÊýÊÇÊäÈëÎļþ»¹ÊÇÊä³öÎļþ.
>>> python convert.py -i inputfile -o outputfile
2.µ±²»ÖªµÀconvert.pyÐèÒªÄÄЩ²ÎÊýʱ£¬ÓÃ-h´òÓ¡³ö°ïÖúÐÅÏ¢
>>> python convert.py -h
getoptº¯ÊýÔÐÎ:
getopt.getopt(args, options[, long_options])
convert.py
01
import sys, getopt
02
03
opts, args = getopt.getopt(sys.argv[1:], "hi:o:")
04
input_file=""
05
output_file=""
06
07
for op, value in opts:
08
if op == "-i":
09
input_file = value
10
elif op == "-o":
11
output_file = value
12
elif op == "-h":
13
usage()
14
sys.exit()
´úÂë½âÊÍ£º
a) sys.argv[1:]ΪҪ´¦ÀíµÄ²ÎÊýÁÐ±í£¬sys.argv[0]Ϊ½Å±¾Ãû£¬ËùÒÔÓÃsys.argv[1:]¹ýÂ˵ô½Å±¾Ãû¡£
b) "hi:o:": µ±Ò»¸öÑ¡ÏîÖ»ÊDZíʾ¿ª¹Ø×´Ì¬Ê±£¬¼´ºóÃæ²»´ø¸½¼Ó²ÎÊýʱ£¬ÔÚ·ÖÎö´®ÖÐдÈëÑ¡Ïî×Ö·û¡£µ±Ñ¡ÏîºóÃæÊÇ´øÒ»¸ö¸½¼Ó²ÎÊýʱ£¬ÔÚ·ÖÎö´®ÖÐдÈëÑ¡Ïî×Ö·ûͬʱºóÃæ¼ÓÒ»¸ö":"ºÅ¡£ËùÒÔ"hi:o:"¾Í±íʾ"h"ÊÇÒ»¸ö¿ª¹ØÑ¡Ï"i:"ºÍ"o:"Ôò±íʾºóÃæÓ¦¸Ã´øÒ»¸ö²ÎÊý¡£
c)
Ïà¹ØÎĵµ£º
ÔÚPythonÖеÄÏß³ÌÔËÐÐʵ¼ÊÊÇÊܵ½InterpreterµÄ¿ØÖÆ»òÕßËµÇ£ÖÆµÄ¡£ÔÚInterpreterµÄºËÐĺ¯Êý
PyObject * PyEval_EvalFrameEx
(PyFrameObject *f, int
throwflag)
ÎÒÃÇ¿ÉÒÔ¿´µ½ÓÐÒ»¸öÈ«¾Ö±äÁ¿_Py_TickerÀ´¿ØÖÆ×ÅÏ̶߳ÔInterpreterµÄÕ¼Óеģ¬Ä¬ÈÏÊÇInterpreterÿִÐÐÒ»°ÙÌõÖ¸Áî¾Í»áÊÍ·ÅÁíÒ»¸öÈ«¾Ö±äÁ¿interpreter_lock.
......
ÔÚÉÏһƪÖÐÎÒÃÇÒѾʹÓÃcÓïÑÔʵÏÖÁËÒ»¸ö×î¼òµ¥µÄÀ©Õ¹Ä£¿é£¬ÕâһƪÖн«ÔÚÆä»ù´¡ÉϽøÐй¦Äܵķḻ¡£Ê×ÏÈÀ´¿¼ÂÇÈçºÎ´ÓÍⲿµÄPythonÏòCÄ£¿é´«µÝ½ø²ÎÊý£¬foo_bar2չʾÁËÈçºÎÏòCÄ£¿é´«µÝÕûÊý£¬¸¡µãÊý£¬×Ö·û´®Èý¸ö²ÎÊý£¬ÆäÖÐ"ids"Ö¸Ã÷ÁË´«Èë²ÎÊýµÄÊý¾ÝÀàÐÍ¡£PyArg_ParseTuple¸ºÔð¶Ôargs½øÐнâÎö£¬Èô½âÎöʧ°ÜÔò·µ»Ø0.´úÂë#include&n ......
ÉÏһƪÀïµÄLAMEÏîÄ¿ÒѾչʾÁËpythonÈçºÎÓëCÓïÑÔ½»»¥£¬µ«³ÌÐòÈÔ²»¹»ÀíÏ룬ÔÚpythonÕâÒ»¶Ë½ö½öÊÇ´«µÝÔ´ÎļþºÍÄ¿±êÎļþµÄ·¾¶£¬ÔÙµ÷ÓÃCÄ£¿éµÄencode·½·¨À´½øÐбàÂ룬µ«ÎÊÌâÔÚÓÚÄãÎÞ·¨¿ØÖÆencodeº¯Êý£¬±ÈÈçÄãÏë±àÂëµÄÔ´ÎļþÈç¹û²»ÊÇÔʼÊý¾Ý£¬¶øÊÇwavÎļþ»òÕ߯äËû¸ñÊ½ÄØ£¿¶ÔÓÚÕâ¸öÎÊÌ⣬ÓÐÁ½ÖÖ·½·¨¿ÉÒÔÑ¡Ôñ£¬Ò»ÖÖÄ£·ÂÇ°ÃæµÄCÄ£ ......
execÓï¾äÓÃÀ´Ö´Ðд¢´æÔÚ×Ö·û´®»òÎļþÖеÄPythonÓï¾ä¡£ÀýÈ磬ÎÒÃÇ¿ÉÒÔÔÚÔËÐÐʱÉú³ÉÒ»¸ö°üº¬Python´úÂëµÄ×Ö·û´®£¬È»ºóʹÓÃexecÓï¾äÖ´ÐÐÕâЩÓï¾ä¡£ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó¡£
>>> exec 'print "Hello World"'
Hello World
evalÓï¾äÓÃÀ´¼ÆËã´æ´¢ÔÚ×Ö·û´®ÖеÄÓÐЧPython±í´ïʽ¡£ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó¡£
>>> ......
×î½üÓÖÖØÐÂ×°ÉÏÁËwindows 7¸Ð¾õ»¹ÊÇÄÇÑù£¬Ö÷ÒªÊÇÏëÓÃM8SDKдЩ³ÌÐò¡£Ò²ÏëÔÚwindowsÉÏÍæÍæ£¬Ò»Ö±¶¼¾õµÃÓÃCдһЩ³£ÓõĶ«¶«ºÜ¸´ÔÓ£¬Ö»ÓнèÖúÓÚ½âÊÍÐÔÓïÑÔÁË£¬ÔÚpython, ruby¼äÑ¡Ôñ£¬×îÖÕÓÃPython¡£
pythonµÄÓï·¨·Ç³£¼òµ¥£¬¶ÔÓÚÒ»¸öѧ¹ý±à³ÌµÄÈË¿ÉÄÜÒ»ÉÏÎç¾Í²î²»¶àÁË£¬²»¹ýpythonµÄÇ¿´óÖ®´¦ÔÚÓÚËüÓÐN¶àµÄ¿â¿ÉÒÔ·½±ãÎÒÃÇ´¦ÀíÎ ......