python中對檔案、資料夾(檔案操作函數)的操作需要涉及os模組和shutil模組。
得到目前工作目錄,也就是目前Python腳本工作的目錄路徑: os.getcwd()
傳回指定目錄下的所有檔案和目錄名稱:os.listdir()
函數用來刪除一個檔案:os.remove()
刪除多個目錄:os.removedirs(r“c:\python”)
檢驗給出的路徑是否為一個檔案:os. path.isfile()
檢定給出的路徑是否為目錄:os.path.isdir()
判斷是否為絕對路徑:os.path.isabs()
檢定給出的路徑是否真地存:os.path.exists()
回傳一個路徑的目錄名稱與檔名:os.path.split() eg os.path.split('/home/swaroop/byte/code/poem.txt ') 結果:('/home/swaroop/byte/code', 'poem.txt')
分離副檔名:os.path.splitext()
取得路徑名:os.path.dirname()
取得檔名:os.path.basename()
執行shell指令: os.system()
讀取與設定環境變數:os.getenv() 與os.putenv()
給出目前平台使用的行終止符:os.linesep Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'
指示你正在使用的平台:os.name 對於Windows ,它是'nt',而對於Linux/Unix用戶,它是'posix'
重命名:os.rename(old, new)
建立多級目錄:os.makedirs(r“c:\ python\test」)
建立單一目錄:os.mkdir(「test」)
取得檔案屬性:os.stat(file)
修改檔案權限與時間戳記:os.chmod(file)
終止目前程序:os.exit()
取得檔案大小:os.path.getsize(filename)
檔案操作:
os.mknod("test .txt") 建立空白檔案
fp = open("test.txt",w) 直接開啟一個文件,如果檔案不存在則建立檔案
關於open 模式:
w 以寫入方式打開,
a 以追加模式開啟(從EOF 開始, 必要時建立新檔案)
r+ 以讀取和寫入模式開啟# 參見w )
a+ 以讀寫模式開啟(參見a )
rb 以讀寫模式開啟(參見a )
rb 以二進位讀取模式開啟
wb 以二元寫入模式開啟(參見w )
ab )
rb+ 以二進位讀寫模式開啟(參見r+ )
wb+ 以二進位讀寫模式開啟(參見w+ )
ab+ 以二進位讀寫模式開啟(參見#a+ )
fp.read([size]) #size為中讀取的長度,而以byte為單位# 可能回傳的只是一行的一部份
fp.readlines([size]) #以每個list中資料的一個成員,且回傳至這個list。其實它的內部是透過循環呼叫readline()來實現的。如果提供size參數,size是表示讀取內容的總長,也就是說可能只讀到文件的一部分。
fp.write(str) #將str寫到文件中,write()且不會在str後加上一個換(多行一次性寫入)。這個函數也只是忠實地寫入,不會在每行後面加上任何東西。
fp.close() #且已關閉檔案。 python會在一個文件不用後自動關閉文件,不過這項功能沒有保證,最好還是養成自己關閉的習慣。如果一個檔案在關閉後也操作會產生ValueError
fp.flush()
fp.isatty() 的next() 把一個file用於for … in file這樣的語句時,就是呼叫next()函數來實現遍歷的。
fp.seek(offset[,whence]) #將文件打作業標記移至offset的位置。這個offset一般是相對於文件的開頭來計算的,一般為正數。但如果提供了whence參數就不一定了,whence可以為0表示從頭開始計算,1表示以目前位置為原點計算。 2表示以文件末端為原點進行計算。需要注意,如果文件以a或a+的模式打開,每次進行寫入操作時,文件操作標記會自動返回文件末尾。
fp.truncate([size]) #將檔案裁成規定的大小,且預設的是裁至目前檔案作業的位置。如果size比文件的大小還要大,依據系統的不同可能是不改變文件,也可能是用0把文件補到對應的大小,也可能是以一些隨機的內容加上去。
目录操作:
os.mkdir("file") 创建目录
复制文件:
shutil.copyfile("oldfile","newfile") oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile") oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
复制文件夹:
shutil.copytree("olddir","newdir") olddir和newdir都只能是目录,且newdir必须不存在
重命名文件(目录)
os.rename("oldname","newname") 文件或目录都是使用这条命令
移动文件(目录)
shutil.move("oldpos","newpos")
删除文件
os.remove("file")
删除目录
os.rmdir("dir")只能删除空目录
shutil.rmtree("dir") 空目录、有内容的目录都可以删
转换目录
os.chdir("path") 换路径
相关例子
1 将文件夹下所有图片名称加上'_fc'
python代码:
# -*- coding:utf-8 -*- import re import os import time #str.split(string)分割字符串 #'连接符'.join(list) 将列表组成字符串 def change_name(path): global i if not os.path.isdir(path) and not os.path.isfile(path): return False if os.path.isfile(path): file_path = os.path.split(path) #分割出目录与文件 lists = file_path[1].split('.') #分割出文件与文件扩展名 file_ext = lists[-1] #取出后缀名(列表切片操作) img_ext = ['bmp','jpeg','gif','psd','png','jpg'] if file_ext in img_ext: os.rename(path,file_path[0]+'/'+lists[0]+'_fc.'+file_ext) i+=1 #注意这里的i是一个陷阱 #或者 #img_ext = 'bmp|jpeg|gif|psd|png|jpg' #if file_ext in img_ext: # print('ok---'+file_ext) elif os.path.isdir(path): for x in os.listdir(path): change_name(os.path.join(path,x)) #os.path.join()在路径处理上很有用 img_dir = 'D:\\xx\\xx\\images' img_dir = img_dir.replace('\\','/') start = time.time() i = 0 change_name(img_dir) c = time.time() - start print('程序运行耗时:%0.2f'%(c)) print('总共处理了 %s 张图片'%(i))
输出结果:
程序运行耗时:0.11
总共处理了 109 张图片
Python常见文件操作示例
os.path 模块中的路径名访问函数
分隔
basename() 去掉目录路径, 返回文件名
dirname() 去掉文件名, 返回目录路径
join() 将分离的各部分组合成一个路径名
split() 返回 (dirname(), basename()) 元组
splitdrive() 返回 (drivename, pathname) 元组
splitext() 返回 (filename, extension) 元组
信息
getatime() 返回最近访问时间
getctime() 返回文件创建时间
getmtime() 返回最近文件修改时间
getsize() 返回文件大小(以字节为单位)
查詢
exists() 指定路徑(檔案或目錄)是否存在
isabs() 指定路徑是否為絕對路徑
isdir() 指定路徑是否存在且為目錄) 指定路徑是否存在且為一個檔案
islink() 指定路徑是否存在且為一個符號連結
ismount() 指定路徑是否存在且為一個掛載點
samefile() 兩個路徑名是否指向同一個檔案
os.path.isdir(name):判斷name是否為目錄,name不是目錄就回傳false
os.path.isfile(name):namename是不是一個文件,不存在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):返回檔案路徑
os模組中的檔案操作:
os 模組屬性
linesep 用來分隔在檔案中所行的字串# ## pathsep 用來分隔檔案路徑的字串
curdir 目前工作目錄的字串名稱
pardir (目前工作目錄的)父目錄字串名稱
1.重新命名:os. rename(old, new)
2.刪除:os.remove(file)
3.列出目錄下的檔案:os.listdir(path)
4.取得目前工作目錄: os.getcwd()
5.改變工作目錄:os.chdir(newdir)
6.建立多層目錄:os.makedirs(r"c:\python\test")
7.建立單一目錄:os.mkdir("test")
8.刪除多個目錄:os.removedirs(r"c:\python") #刪除所給路徑最後一個目錄下所有空目錄。
9.刪除單一目錄:os.rmdir("test")
10.取得檔案屬性:os.stat(file)
11.修改檔案權限與時間戳記:os.chmod(file)
12.執行作業系統指令:os.system("dir")
13.啟動新程序:os.exec(), os.execvp()
14.在背景執行程式:osspawnv( )
15.終止目前程序:os.exit(), os._exit()
16.分離檔名:os.path.split(r"c:\python\hello.py") -- > ("c:\\python", "hello.py")
17.分離副檔名:os.path.splitext(r"c:\python\hello.py") --> (" c:\\python\\hello", ".py")
18.取得路徑名稱:os.path.dirname(r"c:\python\hello.py") --> "c:\ \python"
19.取得檔案名稱:os.path.basename(r"r:\python\hello.py") --> "hello.py"
20.判斷檔案是否存在:os .path.exists(r"c:\python\hello.py") --> True
21.判斷是否為絕對路徑:os.path.isabs(r".\python\") --> ; False
22.判斷是否為目錄:os.path.isdir(r"c:\python") --> True
23.判斷是否為檔案:os.path.isfile(r"c :\python\hello.py") --> True
24.判斷是否為連結檔案:os.path.islink(r"c:\python\hello.py") --> False
25.取得檔案大小:os.path.getsize(filename)
26.*******:os.ismount("c:\\") --> True
27.搜尋目錄下的所有檔案:os.path.walk()
shutil模組對檔案的操作:
1.複製單一檔案:shultil.copy(oldfile, newfle)
2 .複製整個目錄樹:shultil.copytree(r".\setup", r".\backup")
临时文件的操作:
1.创建一个唯一的临时文件:tempfile.mktemp() --> filename
2.打开临时文件:tempfile.TemporaryFile()
内存文件(StringIO和cStringIO)操作
[4.StringIO] #cStringIO是StringIO模块的快速实现模块
1.创建内存文件并写入初始数据:f = StringIO.StringIO("Hello world!")
2.读入内存文件数据:print f.read() #或print f.getvalue() --> Hello world!
3.想内存文件写入数据:f.write("Good day!")
4.关闭内存文件:f.close()
import os import os.path import unittest import time #import pygame class PyFileCommonOperatorTest(unittest.TestCase): def __init__(self): """constructor""" def test01(self): print os.linesep print os.sep print os.pathsep print os.curdir print os.pardir print os.getcwd() print 'unittest here' if __name__ == "__main__": t = PyFileCommonOperatorTest() t.test01()
读文件的写法
#读文件的写法: #读文本文件: input = open('data', 'r')#第二个参数是默认的,可以不加 #读二进制文件: input = open('data', 'rb') #读取所有文件内容: open('xxoo.txt').read() #读取固定字节 open('abinfile', 'rb').read(100) #读每行 file_object.readlines()
更多python 文件操作api相关文章请关注PHP中文网!

Arraysinpython,尤其是Vianumpy,ArecrucialInsCientificComputingfortheireftheireffertheireffertheirefferthe.1)Heasuedfornumerericalicerationalation,dataAnalysis和Machinelearning.2)Numpy'Simpy'Simpy'simplementIncressionSressirestrionsfasteroperoperoperationspasterationspasterationspasterationspasterationspasterationsthanpythonlists.3)inthanypythonlists.3)andAreseNableAblequick

你可以通過使用pyenv、venv和Anaconda來管理不同的Python版本。 1)使用pyenv管理多個Python版本:安裝pyenv,設置全局和本地版本。 2)使用venv創建虛擬環境以隔離項目依賴。 3)使用Anaconda管理數據科學項目中的Python版本。 4)保留系統Python用於系統級任務。通過這些工具和策略,你可以有效地管理不同版本的Python,確保項目順利運行。

numpyarrayshaveseveraladagesoverandastardandpythonarrays:1)基於基於duetoc的iMplation,2)2)他們的aremoremoremorymorymoremorymoremorymoremorymoremoremory,尤其是WithlargedAtasets和3)效率化,效率化,矢量化函數函數函數函數構成和穩定性構成和穩定性的操作,製造

數組的同質性對性能的影響是雙重的:1)同質性允許編譯器優化內存訪問,提高性能;2)但限制了類型多樣性,可能導致效率低下。總之,選擇合適的數據結構至關重要。

到CraftCraftExecutablePythcripts,lollow TheSebestPractices:1)Addashebangline(#!/usr/usr/bin/envpython3)tomakethescriptexecutable.2)setpermissionswithchmodwithchmod xyour_script.3)

numpyArraysareAreBetterFornumericalialoperations andmulti-demensionaldata,而learthearrayModuleSutableforbasic,內存效率段

numpyArraySareAreBetterForHeAvyNumericalComputing,而lelethearRayModulesiutable-usemoblemory-connerage-inderabledsswithSimpleDatateTypes.1)NumpyArsofferVerverVerverVerverVersAtility andPerformanceForlargedForlargedAtatasetSetsAtsAndAtasEndCompleXoper.2)

ctypesallowscreatingingangandmanipulatingc-stylarraysinpython.1)usectypestoInterfacewithClibrariesForperfermance.2)createc-stylec-stylec-stylarraysfornumericalcomputations.3)passarraystocfunctions foreforfunctionsforeffortions.however.however,However,HoweverofiousofmemoryManageManiverage,Pressiveo,Pressivero


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Linux新版
SublimeText3 Linux最新版

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。