Python3 OS ,SYS檔案 目錄方法

2021-09-24 14:13:00 字數 3855 閱讀 1671

os 常用方法

os.remove(『path/filename』) 刪除檔案

os.rename(oldname, newname) 重新命名檔案

os.walk() 生成目錄樹下的所有檔名

os.chdir(『dirname』) 改變目錄

os.mkdir/makedirs(『dirname』)建立目錄/多層目錄

os.rmdir/removedirs(『dirname』) 刪除目錄/多層目錄

os.listdir(『dirname』) 列出指定目錄的檔案

os.getcwd() 取得當前工作目錄

os.chmod() 改變目錄許可權

os.path.basename(『path/filename』) 去掉目錄路徑,返回檔名

os.path.dirname(『path/filename』) 去掉檔名,返回目錄路徑

os.path.join(path1[,path2[,…]]) 將分離的各部分組合成乙個路徑名

os.path.split(『path』) 返回( dirname(), basename())元組

os.path.splitext() 返回 (filename, extension) 元組

os.path.getatime\ctime\mtime 分別返回最近訪問、建立、修改時間

os.path.getsize() 返回檔案大小

os.path.exists() 是否存在

os.path.isabs() 是否為絕對路徑

os.path.isdir() 是否為目錄

os.path.isfile() 是否為檔案

我們利用import語句 輸入 sys模組。基本上,這句語句告訴python,我們想要使用這個模組。sys模組包含了與python直譯器和它的環境有關的函式。

當python執行import sys語句的時候,它在sys.path變數中所列目錄中尋找sys.py模組。如果找到了這個檔案,這個模組的主塊中的語句將被執行,然後這個模組將能夠被你 使用 。注意,初始化過程僅在我們 第一次 輸入模組的時候進行。另外,「sys」是「system」的縮寫。

(1) sys.ar** 實現從程式外部向程式傳遞引數

sys.ar** 變數是乙個包含了命令列引數的字串列表, 利用命令列想程式傳遞引數. 其中,指令碼的名稱總是 sys.ar** 列表的第乙個引數。

(3) sys.exit([arg]) 程式中間的退出, arg=0為正常退出

一般情況下執行到主程式末尾,直譯器自動退出,但是如果需要中途退出程式,可以呼叫sys.exit函式,帶有乙個可選的整數引數返回給呼叫它的程式,表示你可以在主程式中捕獲對sys.exit的呼叫。(0是正常退出,其他為異常)當然也可以用字串引數,表示錯誤不成功的報錯資訊。

(4) sys.modules

sys.modules是乙個全域性字典,該字典是python啟動後就載入在記憶體中。每當程式設計師匯入新的模組,sys.modules將自動記錄該模組。當第二次再匯入該模組時,python會直接到字典中查詢,從而加快了程式執行的速度。它擁有字典所擁有的一切方法.

(5) sys.getdefaultencoding() / sys.setdefaultencoding() / sys.getfilesystemencoding()

sys.getdefaultencoding()

獲取系統當前編碼,一般預設為ascii。

sys.setdefaultencoding()

設定系統預設編碼,執行dir(sys)時不會看到這個方法,在直譯器中執行不通過,可以先執行reload(sys),在執行 setdefaultencoding(『utf8』),此時將系統預設編碼設定為utf8。(見設定系統預設編碼 )

sys.getfilesystemencoding()

獲取檔案系統使用編碼方式,windows下返回』mbcs』,mac下返回』utf-8』

(6) sys.stdin, sys.stdout, sys.stderr

stdin , stdout , 以及stderr 變數包含與標準i/o 流對應的流物件. 如果需要更好地控制輸出,而print 不能滿足你的要求, 它們就是你所需要的. 你也可以替換它們, 這時候你就可以重定向輸出和輸入到其它裝置( device ), 或者以非標準的方式處理它們.

(7) sys.platform

獲取當前系統平台. 如:win32、linux等。

sys 常用方法

sys.ar** 命令列引數list,第乙個元素是程式本身路徑

sys.modules.keys() 返回所有已經匯入的模組列表

sys.exc_info() 獲取當前正在處理的異常類,exc_type、exc_value、exc_traceback當前處理的異常詳細資訊

sys.exit(n) 退出程式,正常退出時exit(0)

sys.hexversion 獲取python解釋程式的版本值,16進製制格式如:0x020403f0

sys.version 獲取python解釋程式的版本資訊

sys.maxint 最大的int值

sys.maxunicode 最大的unicode值

sys.modules 返回系統匯入的模組字段,key是模組名,value是模組

sys.path 返回模組的搜尋路徑,初始化時使用pythonpath環境變數的值

sys.stdin,sys.stdout,sys.stderr

stdin , stdout , 以及stderr 變數包含與標準i/o 流對應的流物件. 如果需要更好地控制輸出,而print 不能滿足你的要求, 它們就是你所需要的. 你也可以替換它們, 這時候你就可以重定向輸出和輸入到其它裝置( device ), 或者以非標準的方式處理它們

我們常用print和raw_input來進行輸入和列印,那麼print 和 raw_input是如何與標準輸入/輸出流建立關係的呢?

其實python程式的標準輸入/輸出/出錯流定義在sys模組中,分別 為: sys.stdin,sys.stdout, sys.stderr

下列的程式也可以用來輸入和輸出是一樣的:

import sys

sys.stdout.write(『helloworld!』)

print 『please enter yourname:』,

name=sys.stdin.readline()[:-1]

print 『hi, %s!』 % name

那麼sys.stdin, sys.stdout, stderr到底是什麼呢?我們在python執行環境中輸入以下**:

import sys

for f in (sys.stdin,sys.stdout, sys.stderr): print f

輸出為:

由此可以看出stdin, stdout, stderr在python中無非都是檔案屬性的物件,他們在python啟動時自動與shell 環境中的標準輸入,輸出,出錯關聯。

而python程式的在shell中的i/o重定向與本文開始時舉的dos命令的重定向完全相同,其實這種重定向是由shell來提供的,與python 本身並無關係。那麼我們是否可以在python程式內部將stdin,stdout,stderr讀寫操作重定向到乙個內部物件呢?答案是肯定的。

python提供了乙個stringio模組來完成這個設想,比如:

from stringio import stringio

import sys

buff =stringio()

temp =sys.stdout #儲存標準i/o流

sys.stdout =buff #將標準i/o流重定向到buff物件

print 42, 『hello』, 0.001

sys.stdout=temp #恢復標準i/o流

print buff.getvalue()

python目錄操作函式 Python3目錄操作

python3 目錄操作 常見的目錄操作 顯示當前目錄 切換目錄 新建 刪除目錄 移動 複製 顯示目錄內容 判斷目錄 檔案是否存在 目錄操作常用的函式如下 os.listdir 列出目錄下的內容 os.getcwd 顯示當前工作路徑 os.chdir 切換工作目錄 os.mkdir 新建目錄 os....

python使用3目運算子

c c 都大家都熟悉三目運算子 c?x y 實際上python中可以這麼使用 1 result x 在c語言中,三目運算經常用到 cond?a b 非常的簡潔,而在python中不支援這種語法。但是,可以用python中and or來實現 這裡是有陷阱的,下面會講到 我們來看下面幾個表示式 fals...

python檔案操作3

4.python檔案的相關操作 模組 import os 操作 重新命名 os.rename old new 修改單級 目錄 檔案 名稱 os.renames old new 修改多級 目錄 檔案 名稱 可以修改檔案和資料夾 os.rename b.txt bb.txt os.rename firs...