>ä½ ä»¬è¦è°¨æ
è¡äºï¼ä¸è¦åææ§äººï¼å½åæºæ
§äººãè¦ç±æå
é´ï¼å 为ç°ä»çä¸ä»£éªæ¶ãä¸è¦ä½ç³æ¶äººï¼è¦æç½ä¸»çæ¨æå¦ä½ãä¸è¦éé
ï¼é
è½ä½¿äººæ¾è¡ï¼ä¹è¦è¢«å£çµå
满ã(EPHESIANS 5:15-18)
#æ ååº(3)
##OS
os模åæä¾äºè®¿é®æä½ç³»ç»æå¡çåè½ï¼å®æå
å«çå
容æ¯è¾å¤ï¼ææ¶åæè§å¾ç¥ç§ã
>>> import os
>>> dir(os)
['EX_CANTCREAT', 'EX_CONFIG', 'EX_DATAERR', 'EX_IOERR', 'EX_NOHOST', 'EX_NOINPUT', 'EX_NOPERM', 'EX_NOUSER','EX_OK', 'EX_OSERR', 'EX_OSFILE', 'EX_PROTOCOL', 'EX_SOFTWARE', 'EX_TEMPFAIL', 'EX_UNAVAILABLE', 'EX_USAGE', 'F_OK', 'NGROUPS_MAX', 'O_APPEND', 'O_ASYNC', 'O_CREAT', 'O_DIRECT', 'O_DIRECTORY', 'O_DSYNC', 'O_EXCL', 'O_LARGEFILE', 'O_NDELAY', 'O_NOATIME', 'O_NOCTTY', 'O_NOFOLLOW', 'O_NONBLOCK', 'O_RDONLY', 'O_RDWR', 'O_RSYNC', 'O_SYNC', 'O_TRUNC', 'O_WRONLY', 'P_NOWAIT', 'P_NOWAITO', 'P_WAIT', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'ST_APPEND', 'ST_MANDLOCK', 'ST_NOATIME', 'ST_NODEV', 'ST_NODIRATIME', 'ST_NOEXEC', 'ST_NOSUID', 'ST_RDONLY', 'ST_RELATIME', 'ST_SYNCHRONOUS', 'ST_WRITE', 'TMP_MAX', 'UserDict', 'WCONTINUED', 'WCOREDUMP', 'WEXITSTATUS', 'WIFCONTINUED', 'WIFEXITED', 'WIFSIGNALED', 'WIFSTOPPED', 'WNOHANG', 'WSTOPSIG', 'WTERMSIG', 'WUNTRACED', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_copy_reg', '_execvpe', '_exists', '_exit', '_get_exports_list', '_make_stat_result', '_make_statvfs_result', '_pickle_stat_result', '_pickle_statvfs_result', '_spawnvef', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'chown', 'chroot', 'close', 'closerange', 'confstr', 'confstr_names', 'ctermid', 'curdir', 'defpath', 'devnull', 'dup', 'dup2', 'environ', 'errno', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fchdir', 'fchmod', 'fchown', 'fdatasync', 'fdopen', 'fork', 'forkpty', 'fpathconf', 'fstat', 'fstatvfs', 'fsync', 'ftruncate', 'getcwd', 'getcwdu', 'getegid', 'getenv', 'geteuid', 'getgid', 'getgroups', 'getloadavg', 'getlogin', 'getpgid', 'getpgrp', 'getpid', 'getppid', 'getresgid', 'getresuid', 'getsid', 'getuid', 'initgroups', 'isatty', 'kill', 'killpg', 'lchown', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'major', 'makedev', 'makedirs', 'minor', 'mkdir', 'mkfifo', 'mknod', 'name', 'nice', 'open', 'openpty', 'pardir', 'path', 'pathconf', 'pathconf_names', 'pathsep', 'pipe', 'popen', 'popen2', 'popen3', 'popen4', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'rmdir', 'sep', 'setegid', 'seteuid', 'setgid', 'setgroups', 'setpgid', 'setpgrp', 'setregid', 'setresgid', 'setresuid', 'setreuid', 'setsid', 'setuid', 'spawnl', 'spawnle', 'spawnlp', 'spawnlpe', 'spawnv', 'spawnve', 'spawnvp', 'spawnvpe', 'stat', 'stat_float_times', 'stat_result', 'statvfs', 'statvfs_result', 'strerror', 'symlink', 'sys', 'sysconf', 'sysconf_names', 'system', 'tcgetpgrp', 'tcsetpgrp', 'tempnam', 'times', 'tmpfile', 'tmpnam', 'ttyname', 'umask', 'uname', 'unlink', 'unsetenv', 'urandom', 'utime', 'wait', 'wait3', 'wait4', 'waitpid', 'walk', 'write']
è¿ä¹å¤å
容ä¸è½é½ä»ç»ï¼ååºæ¥çº¯ç²¹æ¯è¦åå¬ä½ ä¸ä¸ï¼å
混个è¸çï¼å°æ¥ç¨å°åªä¸ªäºï¼å¯ä»¥å°è¿éæ¥æ¾ã
ä¸é¢éæ©å 个ä»ç»ä¸çªï¼ç®çæ¯ä¸æå¼ºåæå·²ç»å¸¸ç¨ä½æ¯ä¸ç¥éä½ æ¯å¦çæçå¦ä¹ æ¹æ³ï¼å½ç¶ï¼è¿ææå¥½çå·¥å
·ââgoogleï¼å
äºä¸å³é®googleï¼å¤äºä¸æé®è°·æï¼é¡»æ¢¯åï¼ã
###æä½æä»¶ï¼éå½åãå 餿件
å¨å¯¹æä»¶è¿è¡æä½çæ¶åï¼`open()`è¿ä¸ªå
å»ºå½æ°å¯ä»¥æå¼æä»¶ã使¯ï¼å¦æå¯¹æä»¶è¿è¡æ¹åãå 餿ä½ï¼å°±è¦æ¯ç¨os模åçæ¹æ³äºã
é¦å
建ç«ä¸ä¸ªæä»¶ï¼æä»¶å为22201.pyï¼æä»¶å
容æ¯ï¼
#!/usr/bin/env python
# coding=utf-8
print "This is a tmp file."
ç¶åå°è¿ä¸ªæä»¶åç§°ä¿®æ¹ä¸ºå«çåç§°ã
>>> import os
>>> os.rename("22201.py", "newtemp.py")
注æï¼ææ¯å
è¿å
¥å°äºæä»¶22201.pyçç®å½ï¼ç¶åè¿å
¥äº¤äºæ¨¡å¼ï¼æä»¥ï¼å¯ä»¥ç´æ¥åæä»¶åï¼å¦æä¸æ¯è¿æ ·ï¼éè¦å°æä»¶åçè·¯å¾åä¸ã
`os.rename("22201.py", "newtemp.py")`ä¸ï¼ç¬¬ä¸ä¸ªæä»¶æ¯åæä»¶åç§°ï¼ç¬¬äºä¸ªæ¯æç®ä¿®æ¹æä¸ºçæä»¶åã
ç¶åæ¥çï¼è½å¤çå°è¿ä¸ªæä»¶ã
$ ls new*
newtemp.py
æä»¶å
容å¯ä»¥ç¨`cat newtemp.py`ççï¼è¿æ¯å¨ubuntuç³»ç»ï¼å¦ææ¯windowsç³»ç»ï¼å¯ä»¥ç¨å
¶ç¸åºçç¼è¾å¨æå¼æä»¶çå
容ï¼ã
é¤äºä¿®æ¹æä»¶åç§°ï¼è¿å¯ä»¥ä¿®æ¹ç®å½åç§°ã请注æé
读帮å©ä¿¡æ¯ã
Help on built-in function rename in module posix:
rename(...)
rename(old, new)
Rename a file or directory.
å¦å¤ä¸ä¸ªos.remove()ï¼é¦å
ç帮å©ä¿¡æ¯ï¼ç¶ååå®éªã
Help on built-in function remove in module posix:
remove(...)
remove(path)
Remove a file (same as unlink(path)).
ä¸ºäºæµè¯ï¼å
建ç«ä¸äºæä»¶ã
$ pwd
/home/qw/Documents/VBS/StarterLearningPython/2code/rd
è¿æ¯æå»ºç«ç临æ¶ç®å½ï¼é颿å 个æä»¶ï¼
$ ls
a.py b.py c.py
ä¸é¢å é¤a.pyæä»¶
>>> import os
>>> os.remove("/home/qw/Documents/VBS/StarterLearningPython/2code/rd/a.py")
ççå äºåï¼
$ ls
b.py c.py
æç¶ç®¡ç¨åã忥ä¸ä¸ªç çï¼
>>> os.remove("/home/qw/Documents/VBS/StarterLearningPython/2code/rd")
Traceback (most recent call last):
File "", line 1, in
OSError: [Errno 21] Is a directory: '/home/qw/Documents/VBS/StarterLearningPython/2code/rd'
æ¥éäºã
ææç®å°è¿ä¸ªç®å½ä¸çæå©æä»¶å å
å
ï¼ä½è¿ä¹åä¸è¡ã注æå¸®å©ä¸ä¸å¥è¯`Remove a file`ï¼os.remove()å°±æ¯ç¨æ¥å 餿件çãå¹¶ä¸ä»æ¥éä¸ä¹å¯ä»¥çå°ï¼é误çåå å¨äºé£ä¸ªåæ°æ¯ä¸ä¸ªç®å½ã
è¦å é¤ç®å½ï¼è¿å¾ç»§ç»åä¸å¦ä¹ ã
###æä½ç®å½
**os.listdir**ï¼æ¾ç¤ºç®å½ä¸çå
容ï¼å
æ¬æä»¶ååç®å½ï¼ã
Help on built-in function listdir in module posix:
listdir(...)
listdir(path) -> list_of_strings
Return a list containing the names of the entries in the directory.
path: path of directory to list
The list is in arbitrary order. It does not include the special
entries '.' and '..' even if they are present in the directory.
çå®å¸®å©ä¿¡æ¯ï¼è¯»è
ä¸å®è§å¾è¿æ¯ä¸ä¸ªé常ç®åçæ¹æ³ï¼ä¸è¿ï¼ç¹å«æ³¨æå®è¿åç弿¯å表ï¼ä¸ä¸æ¾ç¤ºç®å½ä¸æäºéèæä»¶æåç®å½ã
>>> os.listdir("/home/qw/Documents/VBS/StarterLearningPython/2code/rd")
['b.py', 'c.py']
>>> files = os.listdir("/home/qw/Documents/VBS/StarterLearningPython/2code/rd")
>>> for f in files:
... print f
...
b.py
c.py
**os.getcwd**ï¼å½åå·¥ä½ç®å½ï¼**os.chdir**ï¼æ¹åå½åå·¥ä½ç®å½
è¿ä¸¤ä¸ªå½æ°æä¹ç¨ï¼å¯æéè¿`help()`çææ¡£å¦ã请读è
èªè¡ççãå°±ä¸è´´åºæ¥äºï¼ä»
æ¼ç¤ºä¸ä¸ªä¾åï¼
>>> cwd = os.getcwd() #å½åç®å½
>>> print cwd
/home/qw/Documents/VBS/StarterLearningPython/2code/rd
>>> os.chdir(os.pardir) #è¿å
¥å°ä¸ä¸çº§
>>> os.getcwd() #å½å
'/home/qw/Documents/VBS/StarterLearningPython/2code'
>>> os.chdir("rd") #è¿å
¥ä¸çº§
>>> os.getcwd()
'/home/qw/Documents/VBS/StarterLearningPython/2code/rd'
`os.pardir`çåè½æ¯è·å¾ç¶çº§ç®å½ï¼ç¸å½äº`..`
>>> os.pardir
'..'
**os.makedirs, os.removedirs**ï¼å建åå é¤ç®å½
ç´æ¥ä¸ä¾åï¼
>>> dir = os.getcwd()
>>> dir
'/home/qw/Documents/VBS/StarterLearningPython/2code/rd'
>>> os.removedirs(dir)
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python2.7/os.py", line 170, in removedirs
rmdir(name)
OSError: [Errno 39] Directory not empty: '/home/qw/Documents/VBS/StarterLearningPython/2code/rd'
ä»ä¹æ¶åé½ä¸è½å¾æå¿å½¢ï¼ä¸å®è¦è°¦åï¼ä»çææ¡£å¼å§ä¸ç¹ä¸ç¹å°çè§£ãçæ¥éä¿¡æ¯ï¼è¦å é¤æä¸ªç®å½ï¼é£ä¸ªç®å½å¿
é¡»æ¯ç©ºçã
>>> os.getcwd()
'/home/qw/Documents/VBS/StarterLearningPython/2code'
è¿æ¯å½åç®å½ï¼å¨è¿ä¸ªç®å½ä¸å建ä¸ä¸ªæ°çåç®å½ï¼
>>> os.makedirs("newrd")
>>> os.chdir("newrd")
>>> os.getcwd()
'/home/qw/Documents/VBS/StarterLearningPython/2code/newrd'
建ç«äºä¸ä¸ªãä¸é¢æåå建ç«çè¿ä¸ªç®å½å é¤äºï¼æ¯«æ çé®å®æ¯ç©ºçã
>>> os.listdir(os.getcwd())
[]
>>> newdir = os.getcwd()
>>> os.removedirs(newdir)
æç
§æççè§£ï¼è¿éåºè¯¥æ¥éãå ä¸ºææ¯å¨å½åå·¥ä½ç®å½å é¤å½åå·¥ä½ç®å½ãå¦æè¿æ ·è½å¤æ§è¡ï¼æ»è§å¾æç¹å«æãä½äºå®ä¸è¡å¾éãå°±ç®æ¯Pythonçè§å®å§ãä¸è¿ï¼è®©ææ¥ç¡®å®è¿ä¸ªåè½çè¯ï¼è¿æ¯ä¹ æ¯ä¸è½å¨æ¬å°å 餿¬å°ã
æç
§ä¸é¢çæä½ï¼åçå½åçå·¥ä½ç®å½ï¼
>>> os.getcwd()
Traceback (most recent call last):
File "", line 1, in
OSError: [Errno 2] No such file or directory
ç®å½è¢«å äºï¼åªè½åå°ç¶çº§ã
>>> os.chdir(os.pardir)
>>> os.getcwd()
'/home/qw/Documents/VBS/StarterLearningPython/2code'
æç¹ä¸å¯æè®®ï¼æ¬æ¥æ²¡æå½åå·¥ä½ç®å½ï¼æä¹ä¼æâç¶çº§âçå¢ï¼ä½æ¾ç¤ºå°±æ¯è¿æ ·ã
è¡¥å
ä¸ç¹ï¼åé¢è¯´ç妿ç®å½ä¸ç©ºï¼å°±ä¸è½ç¨`os.removedirs()`å é¤ã使¯ï¼å¯ä»¥ç¨æ¨¡å`shutil`ç`retree()`æ¹æ³ã
>>> os.getcwd()
'/home/qw/Documents/VBS/StarterLearningPython/2code'
>>> os.chdir("rd")
>>> now = os.getcwd()
>>> now
'/home/qw/Documents/VBS/StarterLearningPython/2code/rd'
>>> os.listdir(now)
['b.py', 'c.py']
>>> import shutil
>>> shutil.rmtree(now)
>>> os.getcwd()
Traceback (most recent call last):
File "", line 1, in
OSError: [Errno 2] No such file or directory
请读è
注æçæ¯ï¼å¯¹äº`os.makedirs()`è¿æè¿æ ·çç¹ç¹ï¼
>>> os.getcwd()
'/home/qw/Documents/VBS/StarterLearningPython/2code'
>>> d0 = os.getcwd()
>>> d1 = d0+"/ndir1/ndir2/ndir3" #è¿æ¯æ³å»ºç«çç®å½ï¼ä½æ¯ä¸é´çndir1,ndir2ä¹é½ä¸åå¨ã
>>> d1
'/home/qw/Documents/VBS/StarterLearningPython/2code/ndir1/ndir2/ndir3'
>>> os.makedirs(d1)
>>> os.chdir(d1)
>>> os.getcwd()
'/home/qw/Documents/VBS/StarterLearningPython/2code/ndir1/ndir2/ndir3'
ä¸åå¨çç®å½ä¹è¢«å»ºç«èµ·æ¥ï¼ç´å°æå³è¾¹çç®å½ä¸ºæ¢ãä¸`os.makedirs()`类似çè¿æ`os.mkdir()`ï¼ä¸è¿ï¼`os.mkdir()`没æä¸é¢è¿ä¸ªåè½ï¼å®åªè½ä¸å±ä¸å±å°å»ºç®å½ã`os.removedirs()`å`os.rmdir()`ä¹ç±»ä¼¼ï¼åºå«ä¹ç±»ä¼¼ä¸é¢ã
###æä»¶åç®å½å±æ§
ä¸ç®¡æ¯åªç§æä½ç³»ç»ï¼é½è½çå°æä»¶æè
ç®å½çæå
³å±æ§ï¼é£ä¹ï¼å¨os模åä¸ï¼ä¹æè¿æ ·çä¸ä¸ªæ¹æ³ï¼`os.stat()`
>>> p = os.getcwd() #å½åç®å½
>>> p
'/home/qw/Documents/VBS/StarterLearningPython'
æ¾ç¤ºè¿ä¸ªç®å½çæå
³ä¿¡æ¯ï¼
>>> os.stat(p)
posix.stat_result(st_mode=16895, st_ino=4L, st_dev=26L, st_nlink=1, st_uid=0, st_gid=0, st_size=12288L, st_atime=1430224935, st_mtime=1430224935, st_ctime=1430224935)
åæå®ä¸ä¸ªæä»¶ï¼
>>> pf = p + "/README.md"
æ¾ç¤ºæ¤æä»¶çä¿¡æ¯ï¼
>>> os.stat(pf)
posix.stat_result(st_mode=33279, st_ino=67L, st_dev=26L, st_nlink=1, st_uid=0, st_gid=0, st_size=50L, st_atime=1429580969, st_mtime=1429580969, st_ctime=1429580969)
ä»ç»æä¸çï¼å¯è½çä¸åºä»ä¹æ¥ï¼å
ä¸ç¨çæ¥ãè¿æ ·çç»ææ¯å¯¹computerå§å¨æ¯å好çï¼ä½å¯¹è¯»è
å¯è½ä¸å好ã妿ç¨ä¸é¢çæ¹æ³ï¼å°±å好å¤äºï¼
>>> fi = os.stat(pf)
>>> mt = fi[8]
`fi[8]`å°±æ¯`st_mtime`çå¼ï¼å®ä»£è¡¨æåmodifiedï¼ä¿®æ¹ï¼æä»¶çæ¶é´ãçç»æï¼
>>> mt
1429580969
è¿æ¯ä¸å好ï¼ä¸é¢å°±ç¨`time`æ¨¡åæ¥å好ä¸ä¸ï¼
>>> import time
>>> time.ctime(mt)
'Tue Apr 21 09:49:29 2015'
ç°å¨å°±å¯¹è¯»è
å好äºã
ç¨`os.stat()`è½å¤æ¥çæä»¶æè
ç®å½ç屿§ã妿è¦ä¿®æ¹å¢ï¼æ¯å¦å¨é¨ç½²ç½ç«çæ¶åï¼å¸¸å¸¸è¦ä¿®æ¹ç®å½æè
æä»¶çæéçãè¿ç§æä½å¨Pythonç`os`模åè½åå°åï¼
è¦æ±è¶æ¥è¶å¤äºãå¨ä¸è¬æ
åµä¸ï¼ä¸å¨Pythonéåè¿ä¸ªï¼å½ç¶ï¼ä¸çæ¯å¤æçï¼è¯å®æäººä¼ç¨å°çï¼æä»¥`os`模åæä¾äº`os.chmod()`ã
###æä½å½ä»¤
读è
å¦æä½¿ç¨æç§Linuxç³»ç»ï¼æè
æ¾ç»ç¨è¿DOSï¼ææå¾å°ï¼ï¼æè
å¨Windowséé¢ç¨è¿commandï¼å¯¹æ²å½ä»¤é½ä¸éçãéè¿å½ä»¤æ¥åäºæ
çç¡®æ¯å¾é
·çãæ¯å¦ï¼ææ¯å¨Ubuntuä¸ï¼è¦æ¥çæä»¶åç®å½ï¼åªéè¦`ls`就足å¤äºãæå¹¶ä¸æ¯å¦è®¤å¾å½¢çé¢ï¼å¯¹äºæäºäººï¼æ¯å¦ç¨åºåï¼å¨æäºæ
åµä¸ï¼å½ä»¤æ¯ä¸éçé项ï¼çè³æ¯ç¦»ä¸å¼çã
`os`模å䏿ä¾äºè¿æ ·çæ¹æ³ï¼è®¸å¯ç¨åºåå¨Pythonç¨åºä¸ä½¿ç¨æä½ç³»ç»çå½ä»¤ãï¼ä»¥ä¸æ¯å¨Ubuntuç³»ç»ï¼å¦æè¯»è
æ¯Windowsï¼å¯ä»¥å°å½ä»¤æ¢æDOSå½ä»¤ãï¼
>>> p
'/home/qw/Documents/VBS/StarterLearningPython'
>>> command = "ls " + p
>>> command
'ls /home/qw/Documents/VBS/StarterLearningPython'
为äºè¾å
¥æ¹ä¾¿ï¼éç¨äºåé¢ä¾åä¸å·²ç»æçé£ä¸ªç®å½ï¼å¹¶ä¸ï¼ç¨æ¼æ¥åç¬¦ä¸²çæ¹å¼ï¼å°è¦è¾å
¥çå½ä»¤ï¼æ¥çææä»¶å¤¹ä¸çå
容ï¼ç»è£
æä¸ä¸ªå符串ï¼èµå¼ç»åécommandï¼ç¶åï¼
>>> os.system(command)
01.md 101.md 105.md 109.md 113.md 117.md 121.md 125.md 129.md 201.md 205.md 209.md 213.md 217.md 221.md index.md
02.md 102.md 106.md 110.md 114.md 118.md 122.md 126.md 130.md 202.md 206.md 210.md 214.md 218.md 222.md n001.md
03.md 103.md 107.md 111.md 115.md 119.md 123.md 127.md 1code 203.md 207.md 211.md 215.md 219.md 2code README.md
0images 104.md 108.md 112.md 116.md 120.md 124.md 128.md 1images 204.md 208.md 212.md 216.md 220.md 2images
0
è¿æ ·å°±ååºæ¥äºè¯¥ç®å½ä¸çææå
容ã
éè¦æ³¨æçæ¯ï¼`os.system()`æ¯å¨å½åè¿ç¨ä¸æ§è¡å½ä»¤ï¼ç´å°å®æ§è¡ç»æã妿éè¦ä¸ä¸ªæ°çè¿ç¨ï¼å¯ä»¥ä½¿ç¨`os.exec`æè
`os.execvp`ãå¯¹æ¤æå
´è¶£è¯¦ç»äºè§£ç读è
ï¼å¯ä»¥æ¥çå¸®å©ææ¡£äºè§£ãå¦å¤ï¼`os.system()`æ¯éè¿shellæ§è¡å½ä»¤ï¼æ§è¡ç»æåå°æ§å¶æè¿åå°åæ¥çè¿ç¨ï¼ä½æ¯`os.exec()`åç¸å
³ç彿°ï¼å卿§è¡åä¸å°æ§å¶æè¿åå°åç»§æ¿ï¼ä»è使Python失廿§å¶ã
å
³äºPython对è¿ç¨ç管çï¼æ¤å¤æä¸è¿å¤ä»ç»ï¼è¯»è
å¯ä»¥æ¥é
æå
³ä¸é¨èµæã
`os.system()`æ¯ä¸ä¸ªç¨éå¾å¤çæ¹æ³ãæ¾æä¸ä¸ªæåç½ä¸è¯¢é®ï¼ç¨å®æ¥å¯å¨æµè§å¨ãä¸è¿ï¼è¿ä¸ªæä½çç¡®è¦é常ä»ç»ã为ä»ä¹å¢ï¼æ¼ç¤ºä¸ä¸å°±æç½äºã
>>> os.system("/usr/bin/firefox")
(process:4002): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed
(firefox:4002): GLib-GObject-WARNING **: Attempt to add property GnomeProgram::sm-connect after class was initialised
......
ææ¯å¨Ubuntu䏿ä½çï¼æµè§å¨çå°åæ¯`/usr/bin/firefox`ï¼å¯æ¯ï¼é£ä¸ªæåæ¯Windowsç³»ç»ï¼é£ä¹å°±è¦é常å°å¿äºï¼å 为å¨Windowséé¢ï¼è¡¨ç¤ºè·¯å¾çææ æ¯è·ä¸é¢æ¾ç¤ºçæ¯åççï¼å¯æ¯å¨Pythonä¸`\`代表转ä¹ãæ¯è¾ç®åçä¸ä¸ªæ¹æ³æ¯ç¨`r"c:\user\firfox.exe"`çæ ·å¼ï¼å 为å¨`r" "`ä¸çï¼é½è¢«è®¤ä¸ºæ¯åå§å符ãèä¸Windowsç³»ç»ä¸ï¼ä¸è¬æ
åµä¸é£ä¸ªæä»¶ä¸æ¯å®è£
卿æ¼ç¤ºçé£ä¸ªç®åæ ·å¼çæä»¶å¤¹ä¸ï¼èæ¯`C:\Program Files`ï¼è¿ä¸é´è¿æç©ºæ ¼ï¼æä»¥è¿è¦æ³¨æç©ºæ ¼é®é¢ã读è
æç
§è¿äºæç¤ºï¼ççè½ä¸è½å®æç¨`os.system()`å¯å¨firefoxçæä½ã
å¡äºæè§éº»ç¦çä¸è¥¿ï¼å¿
ç¶æå¦å¤ç®åçæ¥æ¿ä»£ãäºæ¯åæäºä¸ä¸ª`webbrowser`模åãå¯ä»¥ä¸é¨ç¨æ¥æå¼æå®ç½é¡µã
>>> import webbrowser
>>> webbrowser.open("http://www.itdiffer.com")
True
ä¸ç®¡æ¯ä»ä¹æä½ç³»ç»ï¼åªè¦å¦ä¸æä½å°±è½æå¼ç½é¡µã
çæ¯ç¥å¥çæ ååºï¼æå¦æ¤å¤çå·¥å
·ï¼è½ä¸å éå¼åè¿ç¨åï¼è½ä¸éä½å¼åææ¬åï¼â人çè¦çï¼æç¨pythonâï¼
------
[æ»ç®å½](./index.md) | [ä¸èï¼æ ååº(2)](./221.md) | [ä¸èï¼æ ååº(4)](./223.md)
å¦æä½ è®¤ä¸ºæå¿
è¦æèµæï¼è¯·éè¿æ¯ä»å®ï¼**[email protected]**,ä¸èææ¿ã