python 中的os模塊

python os模塊

Python os 模塊提供了一個統一的操作系統接口函數
一、對于系統的操作
1、os.name 當前使用平臺
其中 ‘nt’ 是 windows,’posix’ 是linux 或者 unix
2、os.sep
輸出操作系統的特定的路徑分隔符。Win下為“\”,Linux下為“/”
3、os.pathsep 輸出分格符
輸出用于分割文件路徑的字符串。 Windows下是';',Linux下為“:”
4、os.linesep 換行符
輸出當前平臺是用的行終止符,win下為“\r\n”,Linux下為“\n”,Mac使用'\r'。
5、os.environ
獲取系統環境變量path
6、os.system('dir c:\\')
直接執行系統命令
假定有一個shell腳本test.sh:
xxx@ubuntu:~$ vi test.sh
xxx@ubuntu:~$ more test.sh
#!/bin/bash
echo 'hello python!'
echo 'hello world!'
exit 1
>>> import os
>>> os.system("./test.sh")
hello python!
hello world!
256
7、os.popen()
執行一個系統命令,把執行結果存到文件句柄中(和python中open函數類似)
dirList=os.popen('dir d:\\tmp')
for i in dirList:
print i
>> import os
>>> os.popen("./test.sh")
<open file './test.sh', mode 'r' at 0x7f6cbbbee4b0>
>>> f=os.popen("./test.sh")
>>> f
<open file './test.sh', mode 'r' at 0x7f6cbbbee540>
>>> f.readlines()
['hello python!\n', 'hello world!\n']
二、對于目錄的操作
1、os.getcwd()
獲取當前的工作目錄,即當前Python腳本工作的目錄路徑。
結果:E:\python\0507
2、os.chdir('d:\\')
修改當前的工作目錄
3、os.curdir
返回當前目錄
4、os.pardir
目錄切換到父目錄(上一級目錄)
三、對文件的操作
1、os.listdir('e:\\tmp')
列出指定目錄下的所有文件和子目錄,包括隱藏文件或目錄,并以列表形式返回。
2、os.rename('e:\\tmp\\1.txt','e:\\tmp\\1new.txt')
修改文件名
3、os.stat('e:\\tmp\\02.txt')
獲取文件的生命周期中的各個時間
4、os.utime(path[, (atime, mtime)]) 修改文件的時間屬性
設置文件的access and modified time為給定的時間
如果未指定atime和mtime參數,修改的時間將會是當前的時間。
5、os.access()
輸出文件是否有寫的權限:
print os.access(fileName,os.W_OK)
print os.access(fn,os.R_OK) 文件是否有讀的權限
print os.access(fn,os.X_OK) 文件是否有執行的權限
四、os.path
1、os.path.exists(path)
返回當前的目錄或者文件是否存在
判斷path是否存在,如果存在返回True,否則返回False。
2、os.path.isabs(path)
判斷路徑是否為絕對路徑
判斷path是否是絕對路徑,如果是返回True,否則返回False。
3、os.path.isfile(path)
判斷是否是文件
判斷path是否是文件,如果是返回True,否則返回False。
4、os.path.isdir(path)
判斷是否是目錄
判斷path是否是目錄,如果是目錄返回True,否則返回False。
5、os.path.getsize(path): 單位是字節
返回文件或者目錄的大小。獲得文件大小,如果name是目錄返回0L;如果name代表的目錄或文件不存在,怎會報WindowsError異常。
6、os.path.abspath(path)
獲取絕對路徑,(但這個路徑不一定是真實存在的路徑)
eg:
print os.path.abspath('d:\\tmp\\test13.txt')
print os.path.abspath('test13.txt')#返回當前執行目錄下的文件名的路徑,文件沒有的時候也會返回
print os.getcwd()
結果:
d:\tmp\test13.txt
D:\python\0512\test13.txt
D:\python\0512
7、os.path.normpath(path)
把path轉換為標準的路徑。用于解決跨平臺問題
五、從路徑中獲取盤符,文件名,擴展名,目錄
1、os.path.split(path)
對文件路徑做分割,把最后一個\\后面的文件會目錄分割出來
將path分割成目錄和文件名(事實上,如果你完全使用目錄,它也會將最后一個目錄作為文件名而分離,同時它不會判斷文件或目錄是否存在),并存于元組中返回。
eg:
print os.path.split('D:\\tt4\\c12')
print os.path.split('D:\\tt4\\c12\\')
print os.path.split('D:\\tt4\\c12\\t1.txt')
結果:
('D:\\tt4', 'c12')
('D:\\tt4\\c12', '')
('D:\\tt4\\c12', 't1.txt')
2、os.path.dirname(path)
返回目錄的名稱
返回path的目錄路徑,其實就是os.path.split(path)的第一個元素。
3、os.path.basename(path)
返回文件的名稱
返回path最后的文件名。如果path以/或\結尾,就會返回空值。即os.path.split(path)的第二個元素。
4、os.path.splitext(path)
把路徑和擴展名切分開
print os.path.splitext('01.py')
print os.path.splitext('d:\\tmp\\001.txt')
print os.path.splitext('D:\\tt4\\c12')
結果:
('01', '.py')
('d:\\tmp\\001', '.txt')
('D:\\tt4\\c12', '')
fileName,expandName = os.path.splitext(f)
把路徑和擴展名分開后可以直接賦值給兩個變量,其實得到的是一個元組
5、os.path.splitdrive(path)
拆分驅動器(盤符)和后面的路徑。拆分驅動器和文件路徑,并以元組返回結果;主要針對win有效,Linux元組第一個總是空。
返回結果是元祖
6、os.path.join(path,*paths)
把所有的路徑組合成絕對路徑。連接兩個或更多的路徑名,中間以“\”分隔,如果所給的參數中都是絕對路徑名,那最先給的絕對路徑將會被丟棄
六、os.walk()
os.walk() 方法用于通過在目錄樹中游走輸出在目錄中的文件名,向上或者向下。

在Unix,Windows中有效。

語法

walk()方法語法格式如下:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

參數

  • top -- 根目錄下的每一個文件夾(包含它自己), 產生3-元組 (dirpath, dirnames, filenames)【文件夾路徑, 文件夾名字, 文件名】。

  • topdown --可選,為True或者沒有指定, 一個目錄的的3-元組將比它的任何子文件夾的3-元組先產生 (目錄自上而下)。如果topdown為 False, 一個目錄的3-元組將比它的任何子文件夾的3-元組后產生 (目錄自下而上)。

  • onerror -- 可選,是一個函數; 它調用時有一個參數, 一個OSError實例。報告這錯誤后,繼續walk,或者拋出exception終止walk。

  • followlinks -- 設置為 true,則通過軟鏈接訪問目錄。

以下實例演示了 walk() 方法的使用:

#!/usr/bin/python
# -*- coding: UTF-8 -*-import os for root, dirs, files in os.walk(".", topdown=False): for name in files: print(os.path.join(root, name)) for name in dirs: print(os.path.join(root, name))

執行以上程序輸出結果為:

./.bash_logout
./amrood.tar.gz ./.emacs ./httpd.conf ./www.tar.gz ./mysql.tar.gz ./test.py ./.bashrc ./.bash_history ./.bash_profile ./tmp ./tmp/test.py

轉載于:https://www.cnblogs.com/MY0213/p/8669187.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/283737.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/283737.shtml
英文地址,請注明出處:http://en.pswp.cn/news/283737.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java第一季2.2

2019獨角獸企業重金招聘Python工程師標準>>> 標識符&#xff1a; 是給變量類方法命名的符號、標識符開頭可以_、字母、$命名&#xff0c;不可以用數字命名。關鍵字不可命名&#xff0c;大小寫區分。不可以用非法字符 變量&#xff1a;變量類型。變量名。變量值。如&…

讀《華為數字化轉型之道》

數字化轉型應該很多人都聽過&#xff0c;但如果你做過 ToB 軟件&#xff0c;聽得更多的是信息化&#xff0c;那信息化和數字化是什么關系呢&#xff1f;下面用一個小例子來說說我的理解。記得剛上初中的時候&#xff0c;平時測驗、考試的試卷&#xff0c;都是人工在板上進行刻寫…

Thrift基本原理及使用

參考文章RPC 基本原理與 Apach Thrift 初體驗 RPC基本原理 RPC(Remote Procedure Call)&#xff0c;遠程過程調用&#xff0c;大部分的RPC框架都遵循如下三個開發步驟&#xff1a; 1. 定義一個接口說明文件&#xff1a;描述了對象(結構體)、對象成員、接口方法等一系列信息&am…

01-H5語義化標簽

轉載于:https://www.cnblogs.com/Zeki/p/5901399.html

JSON 解析的兩種方法

今天幫朋友看了下JSON解析結果 eval解析JSON中的注意點在JS中將JSON的字符串解析成JSON數據格式&#xff0c;一般有兩種方式&#xff1a; 1.一種為使用eval()函數。 2. 使用Function對象來進行返回解析。 使用eval函數來解析&#xff0c;并且使用jquery的each方法來遍歷 用jque…

配置中心 App Configuration (三):配置的動態更新

Get Azure key-value pairs from App configuration | Serverless360寫在前面我在前文&#xff1a;《微軟Azure配置中心 App Configuration (一)&#xff1a;輕松集成到Asp.Net Core》已經介紹了Asp.net Core怎么輕易的接入azure 配置中心App Configuration(下稱azure 配置中心…

萬字總結 JS 數據結構與常用的算法

前言 首先&#xff0c;為什么我會學習數據結構與算法呢&#xff0c;其實主要是有兩方面 第一&#xff0c;是我在今年的flag里明確說到我會學這個東西第二&#xff0c;學了這些&#xff0c;對自己以后在工作或者面試也會帶來許多好處然后&#xff0c;本文是最近學習的一個總結文…

精通Java設計模式從初見到相愛之工廠+策略模式(3)

為什么80%的碼農都做不了架構師&#xff1f;>>> 1、公司項目需求。 用戶簽到活動&#xff0c;會員簽到怎么處理&#xff0c;超級會員怎么處理&#xff0c;普通用戶簽到怎么處理&#xff0c;針對不同的檔次&#xff0c;有不同的方案&#xff0c;所以在項目中用到了策…

jquery weui 中alert彈出框在ios中跳動問題

問題描述&#xff1a; jquery-weui中的彈出框在ios上會有一個右下角向中間滑動的效果&#xff0c;在Android上沒有這個效果。 解決方法&#xff1a; 修該jquery-weui.js中的openModal方法如下圖: 轉載于:https://www.cnblogs.com/xianZJ/p/6773097.html

WPF效果第一百九十五篇之又玩ListBox

ListBox一直是我的最愛;今天再次基于他玩耍一下不一樣的效果;閑話不多扯直接看效果:1、這次直接用的ItemContainerStyle:2、通過HitTest實現點選邊框&#xff1a;Point point e.GetPosition(LightDarkListBox); VisualTreeHelper.HitTest(LightDarkListBox, new HitTestFilter…

Web3,互聯網新造神“機器”?

本文來自微信公眾號&#xff1a;每經頭條 &#xff08;ID&#xff1a;nbdtoutiao&#xff09;&#xff0c;作者&#xff1a;李蕾&#xff0c;編輯&#xff1a;肖芮冬&#xff0c;頭圖來自&#xff1a;視覺中國 “與目前的互聯網相比&#xff0c;Web3基于區塊鏈等底層技術&#…

Gradle實戰:發布aar包到maven倉庫

查看原文&#xff1a;http://blog.csdn.net/u0108184... Gradle實戰系列文章&#xff1a;《Gradle基本知識點與常用配置》《Gradle實戰&#xff1a;Android多渠道打包方案匯總》《Gradle實戰&#xff1a;不同編譯類型的包同設備共存》《Gradle實戰&#xff1a;執行sql操作hive…

synchronized與Lock的區別

類別synchronizedLock存在層次Java的關鍵字&#xff0c;在jvm層面上是一個類鎖的釋放1、以獲取鎖的線程執行完同步代碼&#xff0c;釋放鎖 2、線程執行發生異常&#xff0c;jvm會讓線程釋放鎖在finally中必須釋放鎖&#xff0c;不然容易造成線程死鎖鎖的獲取假設A線程獲得鎖&am…

even兼容

var eventarguments.callee.caller.arguments[0]||window.event;//消除瀏覽器差異 var ewindow.event||event; //消除瀏覽器差異 轉載于:https://www.cnblogs.com/webqiand/articles/11250768.html

普通中年人的真實出路

閱讀本文大概需要6分鐘。互聯網人甚至中國整體的用工市場的確有中年淘汰的問題&#xff0c;我們可以當它不存在&#xff0c;甚至當有人給出解法的時候&#xff0c;我們也可以認為他們在傳播焦慮&#xff0c;但事實就是事實&#xff0c;它的存在不隨個人意愿而轉移。最近抖音上有…

項目管理常見的問題

綜合管理 缺乏企業級的項目管理平臺;項目目標不清楚;項目經理不了解項目管理流程和工具;項目模板不統一;計劃意識薄弱&#xff0c;缺乏規范的分解。難以過程監控&#xff0c;實時地了解項目進度,靠手工統計和匯報項目進度&#xff0c;難以真實反映進度。項目控制不力&#xff0…

常用小提示

阿里云Linux安裝軟件鏡像源 第一步&#xff1a;備份你的原鏡像文件&#xff0c;以免出錯后可以恢復。 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup第二步&#xff1a;下載新的CentOS-Base.repo 到/etc/yum.repos.d/ CentOS 5 wget -O /etc…

抽象工廠模式(Absraact Factory)介紹與實現

創建一個IProduct,后面模擬業務時要用到 package com.xiawei.factory; public class IProduct { private String productNo "";} package com.xiawei.factory;/** * 規范工廠接口 </p> *///創建一個所有工廠的規范接口,后面所有的工廠類都要來實現這個接口,并…

【溫故知新】C# Linq中 Select SelectMany 使用技巧

微信公眾號&#xff1a;趣編程ACE關注可了解更多的.NET日常實戰開發技巧&#xff0c;如需源碼 后臺回復 源碼 即可;如果覺得對你有幫助&#xff0c;歡迎關注C# Linq中 Select && SelectMany 使用技巧Select 和 SelectMany 是我們開發中對集合常用的兩個擴展方法&#x…

bzoj4870

http://www.lydsy.com/JudgeOnline/problem.php?id4870 矩陣快速冪。。。 人話題意&#xff1a;從nk個物品里選模k余r個物品&#xff0c;問方案數模P 那么我們有方程 f[i][j]f[i-1][j]f[i-1][j-1] 跟組合數一個樣子 j∈(0,k) 這個物品選還是不選加起來 構造矩陣&#xff1a;x.…