① python函數深入淺出 12.os.getcwd()函數詳解
os是python自帶的系統模塊,需要import使用
os 源於英文Operating System(操作系統)的縮寫
cwd 則是源於Current Working Directory,中文意思是 當前工作目錄
所以os.getcwd() 指獲取當前工作目錄
示例:
getcwd()方法語法格式如下:
總之,舉例來講,os.getcwd()、sys.path[0] (sys.argv[0])和 file 的區別是這樣的:
假設目錄結構是:
然後我們在C: est下面執行
這時sub_path.py裡面與各種用法對應的值其實是:
無
path的准確定位對於import包,讀寫文件都非常重要,
如果一時不能理解,可以在文件執行開頭多加幾個
print幫助我們確定那個路徑是我們希望拿到的,然後將其設為全局變數就好了
對基礎運行環境有疑問的,推薦參考: python函數深入淺出 0.基礎篇
② python--目錄操作
一、os.getcwd()
獲取當前工作目錄,即當前Python腳本工作的目錄路徑。
二、os. chdir(path)
改變當前腳本工作目錄;相當於shell下的cd命令。
三、os.pardir
返回當前目錄的父目錄('..')
四、獲取當前使用的操作系統類型(其中 『nt』 是 windows,』posix』 是linux 或者 unix)。
五、os.mkdir(path [, mode=0777])
生成單級目錄;相當於linux中的mkdir dirname。參數mode表示生成的目錄的許可權,默認是超級許可權,也就是0777。如果重復創建,會報錯
六、os.makedirs(path [, mode=0777])
可生成多層遞歸目錄,父目錄如果不存在,遞歸生成。參數mode表示生成的目錄的許可權,默認是超級許可權,也就是0777。
七、os.removedirs(path)
若目錄為空,則刪除,並遞歸到上一級目錄,如若也為空,則刪除,依次類推。
八、os.rmdir(path)
刪除單級空目錄,若目錄不為空則無法刪除,會報錯;相當Linux中的rmdir dirname。
九、os.listdir(path)
列出指定目錄下的所有文件和子目錄,包括隱藏文件或目錄,並以列表形式返回。
十、os.remove(filePath)
刪除一個指定的文件,參數filePath表示文件所在的路徑。
注意:該方法只能刪除文件,不能刪除目錄。
十一、os.rename(oldname, newname)
重命名文件/目錄。
十二、os.access(path, mode)
輸出文件許可權模式。
十三、os.chmod(path, mode)
修改文件的許可權。
十四、os.walk(top, topdown=True, onerror=None, followlinks=False)
➢top:表示需要遍歷的目錄樹的路徑。
➢topdown的默認值是「True」,表示首先返回目錄樹下的文件,然後遍歷目錄樹下的子目錄。值設為False時,則表示先遍歷目錄樹下的子目錄,返回子目錄下的文件,最後返回根目錄下的文件。
➢onerror的默認值是「None」,表示忽略文件遍歷時產生的錯誤。如果不為空,則提供一個自定義函數提示錯誤信息後繼續遍歷或拋出異常中止遍歷。
➢該函數返回一個列表,列表中的每一個元素都是一個元組,該元組有3個元素,分別表示每次遍歷的路徑名,目錄列表和文件列表。
➢默認情況下,os.walk 不會遍歷軟鏈接指向的子目錄,若有需要請將followlinks設定為true
十五、os.path.split(path)
將path分割成目錄和文件名(事實上,如果你完全使用目錄,它也會將最後一個目錄作為文件名而分離,同時它不會判斷文件或目錄是否存在),並存於元組中返回。
十六、os.path.exists(path)
判斷path是否存在,如果存在返回True,否則返回False。
十七、os.path.isfile(path)
判斷path是否是文件,如果是返回True,否則返回False。
十八、os.path.isdir(path)
判斷path是否是目錄,如果是目錄返回True,否則返回False。
十九、os.path.getsize(name)
獲得文件大小,如果name是目錄返回結果是0L或者4096L;如果name代表的目錄或文件不存在,則會報WindowsError異常。
二十、os.path.join(a, *p)
連接兩個或更多的路徑名,中間以「\」分隔,如果所給的參數中都是絕對路徑名,那先給的絕對路徑將會被丟棄。
二十一、os.path.getatime(filename)
返迴文件的最後訪問時間,返回的是時間戳。
二十二、os.path.getctime(filename)
以時間戳的形式返迴文件或目錄的創建時間,在Unix系統上是文件最近更改的時間,在Windows上是文件或目錄的創建時間。
1.基礎題:
檢驗給出的路徑是否是一個文件:os.path.isfile("D:\\test.txt")
檢驗給出的路徑是否是一個目錄:os.path.isdir("D:\\test.txt")
判斷是否是絕對路徑:os.path.isabs("D:\\test.txt")
檢驗給出的路徑是否真地存在:
2.返回一個路徑的目錄名和文件名 :os.listdir("D:\\")
3.分離文件名與擴展名 :os.path.splitext("D:\\test.txt")
4.找出某個目錄下所有的文件,並在每個文件中寫入「gloryroad」 :
>>> for files in os.walk("D:\\test"):
... print(files)
...
('D:\\test', [], ['a.txt', 'b.txt', 'test.txt', 'test1.txt'])
>>> with open("D:\\test\\a.txt","w+") as f:
... f.write("gloryroad")
5.如果某個目錄下文件名包含txt後綴名,則把文件後面追加寫一行「被我找到了!」
6. 命題練習:
1) 一個目錄下只有文件(自己構造),拷貝幾個文件(手工完成)
2 )用listdir函數獲取所有文件,如果文件的創建時間是今天,那麼就在文件裡面寫上文件的路徑、文件名和文件擴展名
3) 如果不是今天創建(獲取文件的創建時間,並轉化為時間格式,判斷是否今天),請刪除
4 )計算一下這個程序的執行耗時
7.刪除某個目錄下的全部文件
8.統計某個目錄下文件數和目錄個數
9.使用程序建立一個多級的目錄,在每個目錄下,新建一個和目錄名字一樣的txt文件
10. 查找某個目錄下是否存在某個文件名
11. 用系統命令拷貝文件
12.輸入源文件所在路徑和目標目錄路徑,然後實現文件拷貝功能
13.遍歷某個目錄下的所有圖片,並在圖片名稱後面增加
14、遍歷指定目錄下的所有文件,找出其中佔用空間最大的前3個文件
15、過濾py源碼中的#注釋,另存為文件result.py,並執行result.py,斷言是否執行成功
16、文件訪問,提示輸入數字 N 和文件 F, 然後顯示文件 F 的前 N 行.
17、從命令行接受1個路徑如:c:\a\b\c\1.py, 實現1個函數創建目錄a\b\c,創建文件1.py,實現1個函數刪除已創建的目錄及文件
18、有一個ip.txt,裡面每行是一個ip,實現一個函數,ping 每個ip的結果,把結果記錄存到ping.txt中,格式為ip:0或ip:1 ,0代表ping成功,1代表ping失敗
19、實現DOS命令執行功能,接受輸入命令並執行,然後把執行結果和返回碼列印到屏幕
20、文件訪問
訪問一存在多行的文件,實現每隔一秒逐行顯示文本內容的程序,每次顯示文本文件的 5行, 暫停並向用戶提示「輸入任意字元繼續」,按回車鍵後繼續執行,直到文件末尾。
顯示文件的格式為:[當前時間] 一行內容,比如:[2016-07-08 22:21:51] 999370this is test
③ python 中os.pardir什麼意思
os.pardir- 路徑組件,意味著將目錄樹向上遍歷一級(例如,「 ..」)。
os.path 函數可用於將表示文件名的字元串解析為其組成部分。重要的是要意識到這些功能不依賴於實際存在的路徑。路徑解析取決於以下定義的一些 os 變數:
1、os.sep- 路徑部分之間的分隔符。
2、os.extsep- 文件名和文件「擴展名」之間的分隔符(例如,「 .」)。
3、os.curdir- 引用當前目錄的路徑組件(例如,「 .」)。
(3)getcwd函數python擴展閱讀
os.getcwd(): 獲取當前工作目錄,即當前python腳本工作的目錄路徑。
os.chdir("dirname") :改變當前腳本工作目錄;相當於shell下cd。
os.curdir 返回當前目錄: ('.')。
os.pardir 獲取當前目錄的父目錄字元串名:('..')。
os.makedirs('dirname1/dirname2') :可生成多層遞歸目錄。
os.removedirs('dirname1'): 若目錄為空,則刪除,並遞歸到上一級目錄,如若也為空,則刪除,依此類推。
④ Python的os庫的使用
python os庫有很多和操作系統相關的功能。
其實不僅僅如此,os庫中還有很多和文件,路徑,執行系統命令相關的。
下面是os模塊常用的方法.
1.os.sep 可以取代操作系統特定的路徑分割符
2.os.name 字元串指示你正在使用的平台。比如對於Windows,它是'nt',而對於Linux/Unix用戶,它是'posix'
3.os.getcwd() 函數得到當前工作目錄,即當前Python腳本工作的目錄路徑
4.os.getenv() 用來讀取環境變數
5.os.putenv() 用來設置環境變數
6.os.listdir() 返回指定目錄下的所有文件和目錄名
7os.remove() 函數用來刪除一個文件
8.os.system() 函數用來運行shell命令
9.os.linesep 字元串給出當前平台使用的行終止符。例如,Windows使用'/r/n',Linux使用'/n'而Mac使用'/r'。
10.os.path.split() 函數返回一個路徑的目錄名和文件名
11.os.path.isfile() 檢驗給出的路徑是一個文件
12os.path.isdir() 檢驗給出的路徑是一個目錄
13.os.path.existe() 函數用來檢驗給出的路徑是否真地存在
14.os.listdir(dirname) 列出dirname下的目錄和文件
15.os.getcwd() 獲得當前工作目錄
16.os.curdir 返回當前目錄('.')
17.os.chdir(dirname) 改變工作目錄到dirname
os.path都是和路徑指定的文件,目錄,和路徑字元串有關系的函數
os.path.isdir(name) 判斷name是不是一個目錄,name不是目錄就返回false
os.path.isfile(name) 判斷name是不是一個文件,不存在name也返回false
os.path.exists(name) 判斷是否存在文件或目錄name
os.path.getsize(name) 獲得文件大小,如果name是目錄返回0L
os.path.abspath(name) 獲得絕對路徑
os.path.normpath(path) 規范path字元串形式
os.path.split(name) 分割文件名與目錄(事實上,如果你完全使用目錄,它也會將最後一個目錄作為文件名而分離,同時它不會判斷文件或目錄是否存在)
os.path.splitext() 分離文件名與擴展名
os.path.join(path,name) 連接目錄與文件名或目錄
os.path.basename(path) 返迴文件名
os.path.dirname(path) 返迴文件路徑
⑤ python中函數包括
1. print()函數:列印字元串
2. raw_input()函數:從用戶鍵盤捕獲字元
3. len()函數:計算字元長度
4. format(12.3654,'6.2f'/'0.3%')函數:實現格式化輸出
5. type()函數:查詢對象的類型
6. int()函數、float()函數、str()函數等:類型的轉化函數
7. id()函數:獲取對象的內存地址
8. help()函數:Python的幫助函數
9. s.islower()函數:判斷字元小寫
10. s.sppace()函數:判斷是否為空格
11. str.replace()函數:替換字元
12. import()函數:引進庫
13. math.sin()函數:sin()函數
14. math.pow()函數:計算次方函數
15. 3**4: 3的4次方
16. pow(3,4)函數:3的4次方
17. os.getcwd()函數:獲取當前工作目錄
18. listdir()函數:顯示當前目錄下的文件
19. socket.gethostbyname()函數:獲得某主機的IP地址
20. urllib.urlopen(url).read():打開網路內容並存儲
21. open().write()函數:寫入文件
22. webbrowser.open_new_tab()函數:新建標簽並使用瀏覽器打開指定的網頁
23. def function_name(parameters):自定義函數
24. time.sleep()函數:停止一段時間
25. random.randint()函數:產生隨機數
⑥ Python怎樣得到資源文件的絕對路徑
路徑有兩種,相對路徑和絕對路徑。 對於Unix-Like系統來說,絕對路徑就是以/開頭的路徑。 相對路徑就是不以/開頭的路徑。
其實,操作系統中實際只有一種路徑,那就是絕對路徑。 相對路徑,只是程序自己幫我們修改為絕對路徑了。
操作系統的程序運行器利用環境變數,為我們把相對路徑生成為絕對路徑。getcwd()函數用於得到當前進程的當前工作路徑。也就是相對路徑的起始點。
在python中,可以使用os.chdir函數切換當前工作路徑。
當前工作路徑,是程序執行時所在的路徑。 我們在哪個目錄下執行程序,當前路徑就是哪一個目錄。
我們常常需要在python中執行一些源碼目錄下的文件。如,我們可能需要用eval動態執行一個python源文件。或者一些配置文件到目標系統的路徑下。此時,我們無法知道這些文件的絕對路徑,因為我們不能預知用戶會把我們的程序安裝到哪一個目錄下。
我們也不能依賴於當前工作路徑。因為用戶很可能不在我們的源碼目錄下執行我們的程序。
那麼,此時我們如何得到源碼目錄下文件的絕對路徑呢?
我是這樣做的:
ABSPATH=None
if __name__ == '__main__':
ABSPATH=os.path.abspath(sys.argv[0])
ABSPATH=os.path.dirname(ABSPATH)+"/"
print ABSPATH
通過拿到第一個參數的絕對路徑,我們就知道了程序所在的絕對路徑,我們就能夠使用ABSPATH這個全局變數組裝出 我們源碼目錄下的任意一個文件的絕對路徑了!
⑦ python函數有哪些
這個還是到化大的類型應該是有許多大,比如說他的藝術函數,或者是上面還說進行求和,然後有各種各樣的。
⑧ 請教一個Python中用os.getcwd或取絕對路徑的問題
A文件夾中有A1,A2,A3三個文件夾,每個文件夾中各有一文件,分別是B1.py,B2.py,B3.py,每個文件中的代碼分別如下:
B1.py中的代碼為:D1='2015'
B2.py中的代碼為:
import
os
C2=os.getcwd()
C1=C2.replace('A2','A1')
import
sys
sys.path.append(C1)
from
B1
import*
D2=
D1*2
print
D2
B3.py中的代碼為:
import
os
C3=os.getcwd()
C2=C3.replace('A3','A2')
import
sys
sys.path.append(C2)
from
B2
import*
print
D2
運行B3.py後報錯如下:
ImportError:
No
mole
named
B1
⑨ python怎麼用遞歸遍歷多層目錄樹
Python實現遞歸遍歷指定文件目錄(startdir),從而找到所有與指定的文件或目錄(target)名相同的文件或目錄的絕對路徑。
scandir.py :
#! /usr/bin/python
# filename : scandir.py
# author : Jesse
# update : 2011/08/15 10:16
import os
def scandir(startdir, target) :
os.chdir(startdir)
for obj in os.listdir(os.curdir) :
if obj == target :
print os.getcwd() + os.sep + obj
if os.path.isdir(obj) :
scandir(obj, target)
os.chdir(os.pardir) #!!!
startdir = raw_input('Please input startdir: ')
target = raw_input('Please input target: ')
scandir(startdir, target)
關於該程序的一點說明:
1. 函數scandir的形參target可以是目錄名也可以是文件名。
2. 函數chdir的作用是切換到指定目錄,該參數必須是有效的且有訪問許可權的相對路徑或絕對路徑。
3. 函數的第五行,使用getcwd函數也是為了取得當前絕對路徑。
4. 加號作為字元串的連接符。os.sep根據你的操作系統給出目錄分隔符,在GNU/Linux和UNIX上它的返回值是'/',在windows上它的返回值是'\\',在Mac OS上是『:』,使用os.sep而不直接使用字元,會提高程序的可移植性。
5. 遞歸調用後,一定不能忘了os.chdir(os.pardir),返回上層目錄(即父目錄)。
重要:
1. 理解for中的兩個並列的if語句,並列是為了解決目標是文件夾時,該目標文件夾中包含符合要求的文件夾。
2. 如果指定目錄中存在訪問受限的文件或文件夾,該程序會失敗,返回無權訪問信息。
http://blog.chinaunix.net/uid-26137687-id-2183259.html
⑩ Python其實很簡單 第十六章 目錄管理
為實現「按名存取」,必須建立文件名與輔存空間中物理地址的對應關系,體現這種對應關系的數據結構稱為文件目錄。文件目錄表目至少要包含文件名、文件的類型、文件的長度、訪問許可權、建立時間、訪問時間和文件存儲地址等內容。通過前面一章的介紹,我們已經知道在文件信息中已經包含了文件名、文件類型訪問許可權等信息,而存儲地址的信息則包含在目錄信息中。
16.1路徑
路徑通常用一個字元串來表示,可以按照路徑信息定位到一個目錄或文件。如:「C:UsersAdministratorPictures1.jpg」這個信息可以非常方便的找到這個圖片文件,「C:UsersAdministratorPictures」這個信息可以幫助我們找到更多的圖片文件。
這里所說的「路徑」和上網時碰到的「地址」含義比較相似,互聯網就相當於將個人電腦可以訪問的范圍擴大了,互聯網中的地址也是對應某一個存儲空間的路徑,按照地址可以訪問互聯網上的信息,就如同按照路徑可以找到計算機中的文件一樣。
在Python中,可以導入 os模塊 來進行目錄操作。
1、獲取當前工作目錄getcwd()函數
例:
import os
print(os.getcwd())
運行結果:
C:
這個路徑是當前Python IDLE所在的地址。
2、獲取文件的絕對路徑abspath()函數
abspath()函數是os模塊的子模塊path提供的一個函數。用法舉例如下:
import os
print(os.path.abspath(r'test.txt'))
運行結果:
C: est.txt
16.2 目錄操作類函數
1、判斷目錄是否存在exists()函數
exists()函數是os模塊的子模塊path中的函數。使用方法舉例如下:
import os
print(os.path.exists(r'C:UsersAdministratorPictures1.jpeg'))
輸出結果:
True
2、創建目錄mkdir()函數和makedirs()函數
mkdir()函數和makedirs()函數都是由os模塊提供的,下面舉例說明用法和區別。
例1:
import os
path='d:test'
if not os.path.exists(path):
os.makedirs(path)
print('該文件目錄創建成功!')
如果目錄d: est已存在,則不再創建;若不存在,則創建。
例2:
import os
path='d:testtest1test11'
if not os.path.exists(path):
os.makedirs(path)
print('該文件目錄創建成功!')
雖然目錄d: est已存在,但可以在其下繼續創建子目錄。上面的代碼可以成功地創建d: est est1 est11目錄。
mkdir()函數和makedirs()函數用法基本一樣,不同之處在於mkdir()函數只能能創建一級目錄。
3、刪除目錄函數rmdir()函數
rmdir()函數是由os模塊提供的。
例如:通過上面的例子已經建立了d: est est1 est11目錄,現在去刪除子目錄test11(此子目錄為空目錄),代碼如下:
import os
os.rmdir('d:testtest1test11')
如果要刪除的目錄非空(其下還包含有文件或文件夾),則不能刪除,並且出現Windows文件操作錯誤的提示(Python是調用操作系統命令完成文件和目錄操作的)。譬如d: est目錄下含有有子目錄,則不能對其進行如下刪除操作。
import os
os.rmdir('d:test')
此時,會出現如下錯誤提示:
Traceback (most recent call last):
File "C:/Users/zym/AppData/Local/Programs/Python/Python39/4.py", line 10, in
os.rmdir('d:test')
OSError: [WinError 145] 目錄不是空的。: 'd:test'
4、刪除非空目錄函數rmtree()函數
rmtree()函數是由Python內置的標准模塊shutil提供的,可以刪除目錄及目錄下的文件和子目錄。如刪除d: est目錄及其下的子目錄和文件,可用如下代碼:
import shutil
shutil.rmtree('d:test')
5、遍歷目錄walk()函數
walk()函數是由os模塊提供的。
語法格式:
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
其中,top是所要遍歷的目錄的地址;topdown為可選參數,為 True時自上而下遍歷 目錄,為False時自下而上遍歷目錄,默認值為True;onerror為可選參數,用於指定異常處理方式,默認為忽略;followlinks為可選參數,如果為 True,則會遍歷目錄下的快捷方式(linux 下是軟連接 symbolic link )實際所指的目錄(默認關閉),如果為 False,則優先遍歷 top 的子目錄。
該函數的返回值為一個三元組(root,dirs,files)。root 所指的是當前正在遍歷的這個文件夾的本身的地址;dirs 是一個 list ,內容是該文件夾中所有的目錄的名字(不包括子目錄);files 同樣是 list , 內容是該文件夾中所有的文件(不包括子目錄)。
例:遍歷d: est目錄及其子目錄下的所有子目錄和文件:
d: est目錄及其下的子目錄和文件
import os
path='d:test'
tups=os.walk(path) # 函數walk()的返回值為三元組
for root,dirs,files in tups: # 遍歷這個三元組
for name in dirs: #遍歷存放目錄值的元組
print('dir:',os.path.join(root,name))
for name in files: #遍歷存放文件名值的元組
print('file:',os.path.join(root,name))
運行結果如下:
dir: d: est est1
dir: d: est est1 est11
dir: d: est est1新建文件夾
file: d: est est1新建文本文檔.txt
file: d: est est1 est11新建文本文檔.txt