1. python 3 中 os.system調用問題
ifnotos.path.exists(dst_dir):
os.mkdir(dst_dir)
print("thisDIR%ssetupSuccessful!"%dst_dir)
else:
print("thisDIR%sisexists!"%dst_dir)
zip_command="winrara%s%s"%(r_name,''.join(source))
#這個winrar,你在cmd能運行嗎?不能的話就加入絕對路徑
print(zip_command)
try:
os.system(zip_command)
print("傷不起!")
exceptExceptionase:
print(e)
print("命令執行失敗咯,你懂得!")
2. 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) 返迴文件路徑
3. python os模塊怎麼使用
常用方法:
1. os.name——判斷現在正在實用的平台,Windows 返回 『nt'; Linux 返回』posix'。
2. os.getcwd()——得到當前工作的目錄。
3. os.listdir()——指定所有目錄下所有的文件和目錄名。
例:
4. python調用OS.system結束進程問題
os.system是執行命令,是否列印取決於命令是否有返回
如果你想不讓其列印 可以在命令中做手腳如: os.system('taskkill /IM dllhost.exe > NUL')
5. Python包之OS
參考: https://docs.python.org/3/library/os.html
Python中對OS模塊的定位是:提供了使用操作系統的工具介面。
如果你想讀寫文件,可以參考open();
如果你想操作文件路徑,參考os.path模塊;
如果你想在命令行讀取所有文件的所有行,參考fileinput模塊;
如果你想創建臨時文件或目錄,參考tempfile模塊;
如果你想更高級的文件和路徑處理,參考shutil模塊;
內置的OSError異常類型,比如在使用os模塊中的函數介面時,在參數中提供了無效的文件或路徑,就回報錯os.error。
該變數返回當前操作系統的類型,當前只注冊了3個值:分別是posix , nt , java, 對應linux/windows/java虛擬機。
在Python中,文件名,命令行參數和環境變數都是用字元串類型來表示。
接下來的這些函數和數據提供了當前進程和用戶的信息狀態和操作介面。
返回進程式控制制終端的文件名,適用於Unix系統。
返回字元串到環境變數的映射。
改變當前工作目錄到指定的路徑,path為要切換到的新路徑。
通過文件描述符改變當前工作目錄。
文件描述符是內核為了高效管理已經被打開的文件所創建的索引,
進程通過文件描述符來訪問文件。 在程序剛啟動的時候默認有3個文件描述符:0(標准輸入),1(標准輸出),2(標准錯誤),系統默認提供了 0~2的文件描述符,之後的 當我們進行 open,create等操作的時候 自動添加進表
所以int creat(const char * ,mode_t)返回的文件int 就是你所進行操作的文件的唯一身份標示,
然後你只要拿著這個ID 然後告訴系統給我找xx, write(int fd,char *buf,int lenght) 通過fd得到准確文件 然後寫入。
當我們新建creat,打開open 之後,得到的fd 是從3開始的 因為前面的三個被系統佔了在OS X系統下測試 文件描述符表 自增,當釋放close之後,fd變成-1,如果再繼續新建 則填補之前的空缺。
返回當前工作目錄。
把字元串類型的文件名翻譯成bytes類型的文件名;os.fsdecode()實現相反的功能。
返迴路徑的文件系統表示。
如果環境變數中存在key,返回環境變數key的值,否則返回default的值。
設置環境變數key的值為value。
使用當前uid/gid檢測對路徑path是否有訪問許可權。其中,path為要檢測是否有許可權的路徑,mode為許可權類別,值可以為os.F_OK、os.R_OK、os.W_OK、os.X_OK中的一個或多個;
切換當前的工作路徑為path指定的路徑。
設置路徑path的標記為flags,flags為數字標記,多個flags可以使用or組合。flags可以為以下值或以下值的組合:
更改文件或目錄的許可權。
path -- 文件名路徑或目錄路徑
mode -- 可用以下選項按位或操作生成, 目錄的讀許可權表示可以獲取目錄里文件名列表, 寫許可權表示可以獲取文件並且可以修改內容,執行許可權表示可以把工作目錄切換到此目錄 ,刪除添加目錄里的文件必須同時有寫和執行許可權 ,文件許可權以用戶id->組id->其它順序檢驗,最先匹配的允許或禁止許可權被應用。
更改路徑的擁有者和group id為uid和gid。如果不修改可以設置為-1,並且需要超級用戶許可權來執行許可權修改操作。
path -- 設置許可權的文件路徑
uid -- 所屬用戶ID
gid -- 所屬用戶組ID
更改當前進程的根目錄為path。
返回當前工作目錄。
返回path目錄路徑下的文件列表,列表沒有固定的順序。
創建目錄path。如果目錄已經存在,會拋出異常FileExistsError。
遞歸的目錄創建,遞歸的意思是創建所有到達葉子目錄的中間目錄。
從原始設備號(通常是stat中的st_dev或st_rdev)中提取設備major號碼。
從原始設備號(通常是stat中的st_dev或st_rdev)中提取設備minor號碼。
根據設備的major號碼和minor號碼組成原始設備號。
刪除文件路徑path。如果path指向的是目錄路徑,會拋出異常IsADirectoryError。如果要刪除目錄,使用rmdir。
遞歸的刪除目錄。與rmdir功能相似,不同的是,如果葉子目錄被刪除之後,removedirs會連續的刪除每一層上級目錄,直到拋出異常(異常會被忽略,因為異常通常意味著上層目錄為非空目錄)。
重命名文件或路徑src為dst,如果dst已經存在,會拋出異常。
遞歸的重命名文件或目錄。功能與rename類似,不同在於,renames首先創建new路徑(即重命名之後的路徑)的中間路徑,然後創建完整new路徑,最後,會使用removedirs刪除掉old路徑(實際上刪除的是old路徑與new路徑不重合的部分)。
重命名文件或路徑src為dst。如果dst是目錄,拋出異常OSError。如果dst是文件且已經存在,且用戶具有許可權,dst會被替換掉。
刪除path目錄。如果path不存在,或者path非空,會拋出異常FileNotFoundError或OSError。如果要刪除整個目錄樹,可以使用shutil.rmtree()。
返回path的絕對路徑,效果等同於使用normpath:normpath(join(os.getcwd(), path))。
返迴路徑path的文件名,也就是對path調用os.path.split函數返回的元組的第二個元素。
paths為一個序列類型,其中每個元素表示一個路徑,函數返回結果為每個元素所表示的路徑的最長公共子路徑。如果paths為空,或者paths同時包含絕對路徑和相對路徑,或者paths同時包含不同驅動類型的路徑(比如Linux系統的路徑和Windows系統的路徑),則拋出異常ValueError。
list中的每個元素表示一個路徑,函數返回每個路徑的最長的共有路徑前綴,因為計算方式為逐個字元進行比較,所以可能返回的結果並非有效的路徑,如果要返回有效路徑,可以使用commonpath。
返回path路徑的目錄部分,也就是對path調用os.path.split函數返回的元組的第一個元素。
如果path指向的路徑已存在,則返回True,否則返回False。
在Unix和Windows系統中,返回path路徑中的~被替換成用戶的home目錄之後的結果。
path路徑中的 {name}被環境變數中對應名稱的值替代。
返回最後一次訪問path的時間,返回值的格式為一個float類型的數值,表示距離epoch基準時間1970-01-01 00:00:00的秒數。如果path表示的路徑不存在或者沒有許可權,拋出異常OSError。
返回最後一次修改path的時間,返回值的格式為一個float類型的數值,表示距離epoch基準時間1970-01-01 00:00:00的秒數。如果path表示的路徑不存在或者沒有許可權,拋出異常OSError。
返回path表示的文件或路徑的大小,以byte位元組為單位。如果path表示的路徑不存在或者沒有許可權,拋出異常OSError。
如果path是絕對路徑,返回True,否則返回False。
如果path表示的是已存在的文件路徑,返回True。
如果path表示的是已存在的目錄,返回True。
如果path表示的是鏈接,返回True。
判斷path是否為掛載點。
連接一個或多個路徑,path和多個*paths的連接會使用路徑分隔符。
對path的字母大小寫進行normalize。在Windows系統中,path中的所有字母都轉成小寫,並且把正斜杠轉成反斜杠。在其他操作系統中,返回path本身。
對path進行normalize,刪除多餘的路徑分隔符。
split the path into a pair (head, tail),其中tail是path中最後的部分,並且永遠不會含有斜杠,head是除了tail之外的部分。如果path以斜杠結尾,tail為空;如果path中不包含斜杠,head為空;如果path為空,head和tail都是空。
6. Mac版本 python如何調用os.system總是顯示出一串數字
試了一下,用迂zd回的辦法解決:
7. Python 拿來直接用的7個os讀寫文件的操作!網友:建議收藏!
在學習真實案例之前,我們先來了解一下Python文件操作的一些基本概念~~
如何創建讀取和寫出的文件對象,open()方法來搞定
他有兩個參數,第一個就是讀取的文件名稱,第二個是可選的,指的是打開文件的模式,默認是讀取文件。
當我們獲取到讀取文件對象fin之後我們就可以讀取文件內容了,這里介紹兩種方式。
第一種是直接讀取文件內容,
第二種是按行讀取文件內容。
區別在於如果你的文件非常大,如果直接讀取效率會非常低下,甚至會撐爆內存。
所以按行讀取按行處理就不會因為文件過大而產生問題了
文件讀取完成之後寫出文件有如下方式:
'\n'的意思是我們手動換行
最後關閉文件有兩種方式
為什麼要關閉文件呢?
如果不關閉他就會持續打開狀態,瑣事其他進程後者線程要操作它的時候就會報錯
我們有時候寫入非常大的數據的時候打開文件後會發現數據不是最新的?
這是因為python在寫出文件是先寫到內存中,等到一定的事件之後或者文件到達一定的數量之後才會寫入到磁碟
所以我們如果想要看最新的數據,可直接調用如下方法
接下來我們使用數據進行測試
1. 文件讀操作
文件讀、寫操作比較常見。讀取文件,要先判斷文件是否存在。
若文件存在,再讀取;不存在,拋出文件不存在異常。
文件存在情況:
文件不存在情況:
open 後,務必要 close,這種寫法有些繁瑣,還容易出錯。藉助 with 語法,同時實現 open 和 close 功能,這是更常用的方法。
2.獲取文件的後綴名
如何優雅地獲取文件後綴名?os.path 模塊,splitext 能夠優雅地提取文件後綴。
3. 批量修改文件後綴名
修改之前
修改文件後綴名的文件方法如下:
從修改之後:
4. 獲取文件名
有時拿到一個文件名時,名字帶有路徑。這時,使用 os.path、split 方法實現路徑和文件的分離。
我們還可以直接使用使用os.path 模塊,splitext 提取文件後綴名。
5.獲取以指定後綴結尾的文件
當我們想要查詢某路徑下所有以固定後綴結尾的文件時,可以使用如下方法
6. 批量修改文件後綴名
後綴名批量修改,實現思路:
1. 遍歷目錄下的所有文件
2. 獲取文件的後綴名
3. 如果後綴名命中為 old_ext,rename 重命名
defbatch_rename(work_dir, old_ext, new_ext):
"""
傳遞當前目錄,原來後綴名,新的後綴名後,批量重命名後綴
7. 批量獲取文件修改時間
os.walk 生成文件樹結構,os.path.getmtime 返迴文件的最後一次修改時間: