Python 中的 sys 库 和 os 库
一,sys--系統(tǒng)相關(guān)的參數(shù)和函數(shù)
1.??sys.argv: #list??
傳遞給Python腳本的命令行參數(shù)列表,第一個(gè)參數(shù)是程序本身的路徑,實(shí)現(xiàn)了從程序外部向程序內(nèi)傳遞參數(shù)。
import sysprint("命令行參數(shù)如下:") for i in sys.argv:print(i)結(jié)果如下: D:\st13\test>1.py 西安 北京 2019-01-29 命令行參數(shù)如下: D:\st13\test\1.py 西安 北京 2019-01-29
2.?sys.path: #list
import模塊的目錄名位置列表 ,列表中的第一項(xiàng)為當(dāng)前位置。
>>> import sys >>> print(sys.path) ['', 'C:\\Python36\\python36.zip', 'C:\\Python36\\DLLs', 'C:\\Python36\\lib', 'C:\\Python36', 'C:\\Users\\Lenovo\\AppData\\Roaming\\Python\\Python36\\site-packages', 'C:\\Python36\\lib\\site-packages']3.??sys.exit([arg]):
?
import sys#sys.exit() 退出程序, 正常退出時(shí)為sys.exit(0)
def f(value):print(value)sys.exit(0)print("hello")
try:sys.exit(1)
except SystemExit as value:f(value)print("world")結(jié)果如下:
hello
1
4. sys.version:#string
獲得python版本的信息? ?
>>> import sys >>> sys.version '3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)]'5. sys.platform:? ? #string
獲取當(dāng)前系統(tǒng)平臺(tái),返回操作系統(tǒng)的名稱(chēng)。?
>>> import sys >>> sys.platform 'win32'6.?sys.modules:? ?#module
返回系統(tǒng)導(dǎo)入的模塊的 絕對(duì)路徑
>>> import sys >>> sys.modules['os'] <module 'os' from 'C:\\Python36\\lib\\os.py'>7. sys.modules.keys() : #dict_keys
返回所有已經(jīng)導(dǎo)入的模塊?
>>>import sys >>> sys.modules.keys() dict_keys(['builtins', 'sys', '_frozen_importlib', '_imp', '_warnings', '_thread', '_weakref', '_frozen_importlib_external', '_io', 'marshal', 'nt', 'winreg', 'zipimport', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_weakrefset', 's ite', 'os', 'errno', 'stat', '_stat', 'ntpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', 'sysconfig', '_bootlocale', '_locale', 'encodings.gbk', '_codecs_cn', '_multibytecodec', 'types', 'functools', '_functools', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', ' reprlib', '_collections', 'weakref', 'collections.abc', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'zope', 'atexit'])8?. sys.modules.values() :#dict_values
返回所有的模塊,包括模塊的絕對(duì)路徑
>>> sys.modules.values() dict_values([<module 'builtins' (built-in)>, <module 'sys' (built-in)>, <module 'importlib._bootstrap' (frozen)>, <module '_imp' (built-in)>, <module '_warnings' (built-in)>, <module '_thread' (built-in)>, <module '_weakref' (built-in)>, <module 'importlib._bootstrap_external' (frozen)>, <module 'io' (built-in)>, <modu le 'marshal' (built-in)>, <module 'nt' (built-in)>, <module 'winreg' (built-in)>, <module 'zipimport' (built-in)>, <module 'encodings' from 'C:\\Python36\\lib\\encodings\\__init__.py'>, <module 'codecs' from 'C:\\Python36\\lib\\codecs.py'>, <module '_codecs' (built-in)>, <module 'encodings.aliases' from 'C:\\Python36\\ lib\\encodings\\aliases.py'>, <module 'encodings.utf_8' from 'C:\\Python36\\lib\\encodings\\utf_8.py'>, <module '_signal' (built-in)>, <module '__main__' (built-in)>, <module 'encodings.latin_1' from 'C:\\Python36\\lib\\encodings\\latin_1.py'>, <module 'io' from 'C:\\Python36\\lib\\io.py'>, <module 'abc' from 'C:\\Pyth on36\\lib\\abc.py'>, <module '_weakrefset' from 'C:\\Python36\\lib\\_weakrefset.py'>, <module 'site' from 'C:\\Python36\\lib\\site.py'>, <module 'os' from 'C:\\Python36\\lib\\os.py'>, <module 'errno' (built-in)>, <module 'stat' from 'C:\\Python36\\lib\\stat.py'>, <module '_stat' (built-in)>, <module 'ntpath' from 'C:\\ Python36\\lib\\ntpath.py'>, <module 'genericpath' from 'C:\\Python36\\lib\\genericpath.py'>, <module 'ntpath' from 'C:\\Python36\\lib\\ntpath.py'>, <module '_collections_abc' from 'C:\\Python36\\lib\\_collections_abc.py'>, <module '_sitebuiltins' from 'C:\\Python36\\lib\\_sitebuiltins.py'>, <module 'sysconfig' from 'C: \\Python36\\lib\\sysconfig.py'>, <module '_bootlocale' from 'C:\\Python36\\lib\\_bootlocale.py'>, <module '_locale' (built-in)>, <module 'encodings.gbk' from 'C:\\Python36\\lib\\encodings\\gbk.py'>, <module '_codecs_cn' (built-in)>, <module '_multibytecodec' (built-in)>, <module 'types' from 'C:\\Python36\\lib\\types.p y'>, <module 'functools' from 'C:\\Python36\\lib\\functools.py'>, <module '_functools' (built-in)>, <module 'collections' from 'C:\\Python36\\lib\\collections\\__init__.py'>, <module 'operator' from 'C:\\Python36\\lib\\operator.py'>, <module '_operator' (built-in)>, <module 'keyword' from 'C:\\Python36\\lib\\keyword.py '>, <module 'heapq' from 'C:\\Python36\\lib\\heapq.py'>, <module '_heapq' (built-in)>, <module 'itertools' (built-in)>, <module 'reprlib' from 'C:\\Python36\\lib\\reprlib.py'>, <module '_collections' (built-in)>, <module 'weakref' from 'C:\\Python36\\lib\\weakref.py'>, <module 'collections.abc' from 'C:\\Python36\\lib\ \collections\\abc.py'>, <module 'importlib' from 'C:\\Python36\\lib\\importlib\\__init__.py'>, <module 'importlib._bootstrap' (frozen)>, <module 'importlib._bootstrap_external' (frozen)>, <module 'warnings' from 'C:\\Python36\\lib\\warnings.py'>, <module 'importlib.util' from 'C:\\Python36\\lib\\importlib\\util.py'>, < module 'importlib.abc' from 'C:\\Python36\\lib\\importlib\\abc.py'>, <module 'importlib.machinery' from 'C:\\Python36\\lib\\importlib\\machinery.py'>, <module 'contextlib' from 'C:\\Python36\\lib\\contextlib.py'>, <module 'zope' (namespace)>, <module 'atexit' (built-in)>])9.??sys.stdout? ?/? sys.stdin? /? sys.stderr :
sys.stdout 標(biāo)準(zhǔn)輸出 ; sys.stdin 標(biāo)準(zhǔn)輸入;? sys.stderr 錯(cuò)誤輸出
>>> import sys >>> sys.stdout <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'> >>> sys.stdin <_io.TextIOWrapper name='<stdin>' mode='r' encoding='utf-8'> >>> sys.stderr <_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>標(biāo)準(zhǔn)輸入:一般為鍵盤(pán)輸入,stdin對(duì)象為解釋器提供輸入字符流,一般使用input()函數(shù)
sys.stdin.readline()? ?? ???從標(biāo)準(zhǔn)輸入讀一行
import sysprint("Please input you name:") name = sys.stdin.readline() print(name)Please input you name: Xiao Ming #用戶(hù)輸入,然后Enter Xiao MingProcess finished with exit code 0標(biāo)準(zhǔn)輸出:一般為屏幕。stdout對(duì)象接收到print語(yǔ)句產(chǎn)生的輸出,print調(diào)用 stdout 的 write方法
import syssys.stdout.write("123456\n") sys.stdout.flush()123456Process finished with exit code 0?
10.?sys.getdefaultencoding() / sys.getfilesystemencoding() : #string
sys.getdefaultencoding() : 獲取解釋器默認(rèn)編碼。?
sys.getfilesystemencoding() : 獲取內(nèi)存數(shù)據(jù)存到文件里的默認(rèn)編碼。
?
二,OS——操作系統(tǒng)
使用?os?模塊為程序提供了一些可移植性。但并非所有的函數(shù)在每個(gè)平臺(tái)上都可用,?比如后文中提到的一些進(jìn)程管理函數(shù)在 Windows 上就不可用。
Python 文檔中?os?模塊的的副標(biāo)題是「各種各樣的操作系統(tǒng)接口」。模塊包含的大部分函數(shù)用于創(chuàng)建和管理進(jìn)程或文件系統(tǒng),例如:目錄與文件,此外還有一些其他函數(shù)。
?
1,os.listdir()? #list
查看特定目錄下加文件??
import os pp = 'C:/Users/HP/Desktop/文檔/Python/新建文件夾/text'dd = sorted(os.listdir(pp))print(dd) print(type(dd))['1.py', '2.py', 'test.py', 'text2.py'] <class 'list'>Process finished with exit code 02, os.walk()? ?#list
函數(shù)經(jīng)過(guò)一個(gè)目錄時(shí),會(huì)遞歸的訪(fǎng)問(wèn)它的子目錄,并產(chǎn)生一個(gè)?tuple,其中包含了目錄路徑、該路徑下任何直接子目錄和指定目錄中所有文件名的列表。
import os pp = 'C:/Users/HP/Desktop/文檔/Python/新建文件夾'dd = sorted(os.walk(pp))print(dd) print(type(dd)) [('C:/Users/HP/Desktop/文檔/Python/新建文件夾', ['.idea', 'basis', 'crawal', 'CTF', 'sql', 'text', 'venv', '__pycache__'], []), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\.idea', ['codeStyles', 'dictionaries'], ['encodings.xml', 'misc.xml', 'modules.xml', 'workspace.xml', '新建文件夾.iml']), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\.idea\\codeStyles', [], ['codeStyleConfig.xml']), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\.idea\\dictionaries', [], ['HP.xml']), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\CTF', [], ['3位數(shù)字利用字典型爆破zip文件.py', 'ASCII偏移.py', 'ctf-cookie-欺騙.py', '凱撒密碼與base64結(jié)合.py', '利用 RGB 生成圖片.py', '杰斐遜轉(zhuǎn)盤(pán)解密.py', '混合進(jìn)制轉(zhuǎn)化為字符.py']), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\__pycache__', [], []), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\basis', [], ['batterys.py', 'car.py', 'class_car_inherit.py', 'class_dog.py', 'dictionary_nest.py', 'ecar.py', 'file.py', 'function.py', 'function_any_number_.py', 'function_manyshican.py', 'input_filling_dictinary.py', 'input_filling_dictionary2.py', 'kong.py', 'my_car.py', 'while_continue.py', 'zidian.py', '__init__.py', '第幾天.py']), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\crawal', [], ['100次爬取用時(shí).py', '__init__.py', '實(shí)例 一 爬取JD商品信息.py', '實(shí)例 七 淘寶商品信息爬取.py', '實(shí)例三 用爬蟲(chóng)進(jìn)行百度搜索.py', '實(shí)例二 爬取亞馬遜的商品信息.py', '實(shí)例五 ip地址查詢(xún).py', '實(shí)例六爬取中國(guó)大學(xué)待命信息.py', '實(shí)例四 爬取圖片并保存.py']), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\sql', ['bool', 'time'], []), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\sql\\bool', [], ['bool_post.py', 'get_column_name.py', 'get_table_name.py']), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\sql\\time', [], ['time_get.py', 'time_post.py', 'X-F-F頭注入_columns_name.py', 'X-F-F頭注入_tables_name.py', 'X-F-F頭注入_z_dumps.py']), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\text', [], ['1.py', '2.py', 'test.py', 'text2.py']), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\venv', ['Include', 'Lib', 'Scripts'], ['pyvenv.cfg']), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\venv\\Include', [], []), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\venv\\Lib', ['site-packages'], []), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\venv\\Lib\\site-packages', [], []), ('C:/Users/HP/Desktop/文檔/Python/新建文件夾\\venv\\Scripts', [], ['activate', 'activate.bat', 'Activate.ps1', 'deactivate.bat'])] <class 'list'>3,os.name? ? #str
顯示當(dāng)前使用的平臺(tái)? ?win ->? nt??
import osprint(os.name)'nt'4,os.getcwd()? ? ? ? #str
獲取當(dāng)前腳本工作的絕對(duì)路徑
import os #pp = 'C:/Users/HP/Desktop/文檔/Python/新建文件夾/text'dd = os.getcwd() print(dd) print(type(dd))C:\Users\HP\Desktop\文檔\Python\新建文件夾\text <class 'str'>5,?os.remove(‘filename’)
用于刪除指定路徑的文件。如果指定的路徑是一個(gè)目錄,將拋出OSError。強(qiáng)調(diào)必須是文件,而不是文件夾或者目錄
import osos.remove('C:\\Users\\HP\Desktop\\文檔\\Python\\新建文件夾\\text\\111.py')6,os.makedirs(‘dirname/dirname’)
可生成多層遞規(guī)目錄? ? 注意 該命令只能用來(lái)生成文件夾 不能生成文件,如果文件夾已經(jīng)存在會(huì)報(bào)錯(cuò)
import osos.makedirs('C:/Users/HP\Desktop/文檔/Python/新建文件夾/text/fff/ddd')7,os.rmdir(‘dirname’)
刪除單級(jí)目錄,如果不是空目錄會(huì)報(bào)錯(cuò),只能用來(lái)刪除空目錄
import osos.rmdir('C:/Users/HP\Desktop/文檔/Python/新建文件夾/text/fff/ddd')8,os.rename(“oldname”,”newname”)
重命名文件?
import osos.rename('C:/Users/HP\Desktop/文檔/Python/新建文件夾/text/text4.py','C:/Users/HP\Desktop/文檔/Python/新建文件夾/text/text2.py')9,os.system('filename')
運(yùn)行shell命令,注意:這里是打開(kāi)一個(gè)新的shell,運(yùn)行命令,當(dāng)命令結(jié)束后,關(guān)閉shell。用于打開(kāi)文件或者程序,不能打開(kāi)文件夾
10,os.environ
獲取系統(tǒng)環(huán)境變量
import osprint(os.environ) print(type(os.environ))?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Python 中的 sys 库 和 os 库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: bugku—— 代码审计 做题记录
- 下一篇: Python 环境搭建,开发工具,基本语