Python基礎之os和資料結構
今天總結了下Python的基礎,發現還是有很多基礎需要鞏固,直接把學習的內容放上來。
>>> import os 得到當前的所在的路徑 >>> os.getcwd() '/root/test' 列出當前路徑所在的資料夾下的檔案 >>> os.listdir(os.getcwd()) ['a.py', 'redis_test.sql', 'cmdb_server.txt', 'a.sql', 'test.py', 'redis_test.txt', 'paramiko.pyc', 'cmdb_server.txt.bak', 'paramiko.py', 'requirements_add.txt', 'test.txt', 'opsmanage.tar.gz', 'test.sql'] 返回當前的絕對路徑 >>> os.path.abspath('.') '/root/test' 得到當前路徑上一次的絕對路徑 >>> os.path.abspath('..') '/root' 把路徑分解為路徑和檔名 >>> os.path.split('/root/test/test.py') ('/root/test', 'test.py') >>> os.path.split('.') ('', '.') 將路徑進行合併 >>> os.path.join('/root/test','test.py') '/root/test/test.py' 返回指定path的資料夾部分 >>> os.path.dirname('/root') '/' 返回當前path的資料夾 >>> os.path.dirname(os.getcwd()) '/root' 得到當前的路徑,和上面的可以互為印證 >>> os.getcwd() '/root/test' 返回path中的檔名 >>> os.path.basename('/root/test/test.py') 'test.py' 返回path中的子資料夾 >>> os.path.basename('/root/test') 'test' >>> os.path.basename('/root/test/') '' 得到檔案或資料夾的最後修改時間 >>> os.path.getmtime('/root/test/test.py') 1521193690.4832795 得到檔案或資料夾的大小,注意資料夾的部分得到的可能不是真實的大小,不是du -sh 類似的結果 >>> os.path.getsize('/root/test/test.py') 29 檢視檔案或者資料夾是否存在 >>> os.path.exists('/root/test/test.py') True >>> os.path.exists('/root/test/test.py22') False
一些路徑在不同操作平臺的表示 >>> os.sep '/' >>> os.extsep '.' >>> os.linesep '\n' >>> os.pathsep ':'
得到目錄下的檔案 >>> os.listdir(os.getcwd()) ['dict.py', 'sqlplan.py', 'deploy.pyc', 'task_manage.py', 'cron.py', 'mysql_manage.py', 'system_manage.pyc', 'cmdb.pyc', 'deploy.py', 'ansible.pyc', 'index.py', 'tuning.ini', 'cron.pyc', 'backup.pyc', 'mysql_manage.pyc', 'users.py', 'celeryHandle.py', 'assets.pyc', '__init__.pyc', 'ansible.py', '__init__.py', 'task_manage.pyc', 'cmdb.py', 'users.pyc', 'assets.py', 'system_manage.py', 'index.pyc', 'dict.pyc', 'backup.py'] 對當前目錄下的檔案存入列表 >>> lists=os.listdir(os.getcwd()) 對列表進行排序 >>> lists.sort() 得到列表 >>> print(lists) ['__init__.py', '__init__.pyc', 'ansible.py', 'ansible.pyc', 'assets.py', 'assets.pyc', 'backup.py', 'backup.pyc', 'celeryHandle.py', 'cmdb.py', 'cmdb.pyc', 'cron.py', 'cron.pyc', 'deploy.py', 'deploy.pyc', 'dict.py', 'dict.pyc', 'index.py', 'index.pyc', 'mysql_manage.py', 'mysql_manage.pyc', 'sqlplan.py', 'system_manage.py', 'system_manage.pyc', 'task_manage.py', 'task_manage.pyc', 'tuning.ini', 'users.py', 'users.pyc'] sort按key的關鍵字進行升序排序,lambda的入參fn為lists列表的元素,獲取檔案的最後修改時間,所以最終以檔案時間從小到大排序 最後對lists元素,按檔案修改時間大小從小到大排序 >>> lists.sort(key=lambda fn:os.path.getmtime(os.getcwd()+'/'+fn) ) >>> print(lists) ['__init__.py', 'deploy.py', 'cron.py', 'ansible.py', '__init__.pyc', 'cron.pyc', 'deploy.pyc', 'ansible.pyc', 'assets.py', 'assets.pyc', 'celeryHandle.py', 'sqlplan.py', 'tuning.ini', 'dict.py', 'dict.pyc', 'index.py', 'index.pyc', 'task_manage.py', 'task_manage.pyc', 'users.py', 'users.pyc', 'system_manage.py', 'system_manage.pyc', 'cmdb.py', 'cmdb.pyc', 'backup.py', 'backup.pyc', 'mysql_manage.py', 'mysql_manage.pyc'] 得到檔案的副檔名,如果輸入是資料夾,返回為空 >>> os.path.splitext(os.getcwd()) ('/root/OpsManage-master/OpsManage/views', '') >>> os.path.splitext('/root/OpsManage-master/OpsManage/views/task_manage.pyc') ('/root/OpsManage-master/OpsManage/views/task_manage', '.pyc') 列出當前目錄下所有的.py檔案 >>> [x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py'] ['dict.py', 'sqlplan.py', 'task_manage.py', 'cron.py', 'mysql_manage.py', 'deploy.py', 'index.py', 'users.py', 'celeryHandle.py', 'ansible.py', '__init__.py', 'cmdb.py', 'assets.py', 'system_manage.py', 'backup.py']
資料結構操作
列表操作 >>> header=[1,2,3] >>> dat=[3,2,1] 列表轉換為字典 >>> dict(zip(header,dat)) {1: 3, 2: 2, 3: 1} 執行作業系統命令,使用popen >>> cmd='hostname' >>> os.popen(cmd) <open file 'hostname', mode 'r' at 0x7f416e1d45d0> >>> os.popen(cmd).read() 'dev01\n' 執行作業系統命令,使用commands,這個返回更豐富一些 >>> import commands >>> commands.getstatusoutput('hostname') (0, 'dev01') 列表的追加 >>> ll=['a','b','c','d'] >>> ll.append('jeanron100') >>> print(ll) ['a', 'b', 'c', 'd', 'jeanron100'] 判斷列表元素是否存在 >>> print ll.count('jeanron100') 1 >>> print ll.count('jeanron1000') 0 列表的組合,如果是兩個列表,效果就更清晰了 >>> ll.extend(['jeanron','jianrong']) >>> print(ll) ['a', 'b', 'c', 'd', 'jeanron100', 'jeanron', 'jianrong'] 刪除指定元素 >>> ll.remove('jeanron') >>> print(ll) ['a', 'b', 'c', 'd', 'jeanron100', 'jianrong'] 反向輸出列表元素 >>> ll.reverse() >>> print(ll) ['jianrong', 'jeanron100', 'd', 'c', 'b', 'a'] 列表排序 >>> ll.sort() >>> print(ll) ['a', 'b', 'c', 'd', 'jeanron100', 'jianrong']
字典操作 >>> info={'name':'jeanron','age':33,'gender':'male'} >>> print info.get('name') jeanron 輸出字典的鍵值 >>> print info.keys() ['gender', 'age', 'name'] >>> print info.items() [('gender', 'male'), ('age', 33), ('name', 'jeanron')] 以列表返回字典中的所有值 >>> print info.values() ['male', 33, 'jeanron']
集合操作 >>> info={'my','name','is','jeanron'} >>> print info set(['jeanron', 'is', 'my', 'name']) >>> test_info={'this','is','a','test'} 集合交集 >>> print info&test_info set(['is']) 合集 >>> print info.union(test_info) set(['a', 'name', 'this', 'is', 'jeanron', 'test', 'my']) 並集 >>> print info|test_info set(['a', 'name', 'this', 'is', 'jeanron', 'test', 'my'])
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2152367/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python基礎之:Python的資料結構Python資料結構
- Redis基礎資料結構之字串Redis資料結構字串
- Redis基礎資料結構之MapRedis資料結構
- Redis基礎資料結構之SkipListRedis資料結構
- 基礎資料結構之陣列資料結構陣列
- 基礎資料結構之遞迴資料結構遞迴
- Oracle基礎結構之OS驗證和口令檔案驗證Oracle
- 資料結構基礎學習之(棧和佇列)資料結構佇列
- Redis基礎資料結構之連結串列Redis資料結構
- 資料結構 & 演算法 in Swift (一):Swift基礎和資料結構資料結構演算法Swift
- 資料結構基礎學習之緒論資料結構
- Coursera北大《資料結構基礎》之概論資料結構
- 實戰PHP資料結構基礎之棧PHP資料結構
- 實戰PHP資料結構基礎之雙連結串列PHP資料結構
- Redis基礎資料結構Redis資料結構
- 實戰PHP資料結構基礎之遞迴PHP資料結構遞迴
- 資料結構基礎學習之線性表資料結構
- 實戰PHP資料結構基礎之佇列PHP資料結構佇列
- 實戰 PHP 資料結構基礎之遞迴PHP資料結構遞迴
- 資料結構基礎 連結串列資料結構
- 資料結構與演算法基礎之指標和陣列資料結構演算法指標陣列
- 實戰PHP資料結構基礎之單連結串列PHP資料結構
- 資料結構基礎知識資料結構
- 基礎資料結構大賞資料結構
- Python資料分析 Pandas模組 基礎資料結構與簡介Python資料結構
- Redis基礎——剖析基礎資料結構及其用法Redis資料結構
- 資料結構基礎和演算法題系列總結資料結構演算法
- 資料結構基礎學習之(串與陣列)資料結構陣列
- 資料結構與演算法之基礎知識資料結構演算法
- Redis原始碼學習——基礎資料結構之SDSRedis原始碼資料結構
- .NET基礎之資料繫結
- Python基礎之Python資料世界Python
- [開篇]基礎演算法和資料結構0演算法資料結構
- 大資料基礎架構總結大資料架構
- 資料結構基礎--雜湊表資料結構
- 淺析Redis基礎資料結構Redis資料結構
- 資料結構基礎第4講資料結構
- 資料結構基礎第3講資料結構