近幾年隨著Python
的熱度不斷上漲,人們漸漸使用這門編程語言來進(jìn)行一些自動化操作,以節(jié)省重復(fù)勞動帶來的效率低下,那么必定會涉及到對 文件系統(tǒng)的操作 ,包括文件的增、刪、改、查等等,今天小編就來介紹一下如何用Python
來實(shí)現(xiàn)這些功能
輸出當(dāng)前的路徑
我們可以通過Python
當(dāng)中的OS
庫來獲取當(dāng)前文件所在的位置
import os
os.getcwd()
路徑的拼接
我們通過os.path.join()
方法來實(shí)現(xiàn)
os.path.join('output', 'Book1.xlsx')
output
outputBook1.xlsx
確認(rèn)某文件夾或者是文件是否存在
我們先來看如何來確認(rèn)文件夾是否存在,同樣也是通過OS
模塊
os.path.exists('directory_name')
同樣的道理,要是我們查看一下某個文件是否存在的時(shí)候,可以這么做
os.path.exists('path/file_name')
建立文件夾目錄
然后我們來看一下如何新建一個文件夾
os.mkdir("文件夾名稱")
當(dāng)然要是文件夾目錄已經(jīng)提前存在的情況下,上述的代碼自然會報(bào)錯,所以我們通常會先檢查一下是否已經(jīng)存在
if not os.path.exists('文件夾名稱'):
os.mkdir('文件夾名稱')
當(dāng)然我們有時(shí)候需要在已建的文件夾下創(chuàng)建子文件夾,例如下圖
這個時(shí)候要是引用os.mkdir()
方法或許會稍顯繁瑣,這時(shí)我們可以通過os.mkdirs()
方法來實(shí)現(xiàn)
os.makedirs(os.path.join('test_dir', 'level_1', 'level_2', 'level_3'))
羅列出當(dāng)前目錄下所包含的所有文件
代碼如下
os.listdir('文件夾名稱')
但是有時(shí)候我們可能想例如搜尋一下當(dāng)前目錄下的所有文件中以“py”結(jié)尾的文件,我們可以通過通配符來實(shí)現(xiàn),代碼如下
list(glob(os.path.join('.', '*.py')))
上面提到的glob
模塊能夠快速查找我們想要的目錄和文件,它支持*
、**
、?
、[]
這四個通配符
移動文件
要是我們想在不同的目錄文件夾之下移動文件,該怎么操作呢?這里我們介紹Python
當(dāng)中的shutil
模塊,假設(shè)我們想要將當(dāng)前目錄下的幾個csv文件移動到“test_dir”目錄文件夾之下,代碼如下
import shutil
for file in list(glob(os.path.join('.', '*.csv'))):
shutil.move(file, 'test_dir')
復(fù)制文件
當(dāng)我們想要復(fù)制文件的時(shí)候,也可以使用shutil
模塊,例如我們想要將幾個“test_dir”目錄文件夾下的csv文件復(fù)制到“output”目錄文件夾之下,代碼如下
shutil.copy(os.path.join('test_dir', 'data.csv'), 'output')
除此之外,我們還能夠?qū)φ迟N過去的文件重命名,代碼如下
shutil.copy(os.path.join('test_dir', 'data.csv'),
os.path.join('output', 'data_2.csv'))
刪除文件
我們來看一下刪除文件該如何實(shí)現(xiàn)?os.remove()
方法可以完成刪除文件的功能,
os.remove(os.path.join('output', 'data_2.csv'))
當(dāng)我們想要刪除一整個目錄文件夾的時(shí)候,可以使用os.rmdir()
方法,當(dāng)然只僅限于是空的目錄文件夾
os.rmdir(os.path.join('test_dir', 'level_1', 'level_2', 'level_3'))
而對于目錄文件夾下存在文件的,并不是空的目錄文件夾,我們還是需要用到shutil
模塊,代碼如下
shutil.rmtree("test_delete")
或者是
shutil.rmtree(os.path.join("test_delete", "test_1_delete"))
創(chuàng)建和解壓壓縮包
談及到操作壓縮包相關(guān)的內(nèi)容,就不得不說zipobj
這個模塊了
- 創(chuàng)建一個壓縮包
這里我們要用到的是zipfile
模塊當(dāng)中的write()
方法
file_lists = list(glob(os.path.join('.', '*.xlsx')))
with zipfile.ZipFile(r"我創(chuàng)建的壓縮包.zip", "w") as zipobj:
for file in file_lists:
zipobj.write(file)
- 讀取壓縮包當(dāng)中的文件信息
通過zipfile
模塊當(dāng)中的namelist()
方法來實(shí)現(xiàn)
with zipfile.ZipFile("我創(chuàng)建的壓縮包.zip", "r") as zipobj:
print(zipobj.namelist())
output
['Book1.xlsx', 'supermarkt_sales.xlsx']
可以看到輸出的就是上次我們打包的幾個excel
文件
- 將壓縮包當(dāng)中的單個文件,解壓出來
通過zipfile
模塊當(dāng)中的extract()
方法來實(shí)現(xiàn)
dst = "output"
with zipfile.ZipFile("我創(chuàng)建的壓縮包.zip", "r") as zipobj:
zipobj.extract("Book1.xlsx",dst)
上述代碼的用意就是將壓縮包當(dāng)中的“Book1.xlsx”文件解壓至“output”目錄文件夾下
- 將壓縮包中的所有文件,都解壓出來
通過zipfile
模塊當(dāng)中的extractall()
方法來實(shí)現(xiàn),代碼如下
dst = "output"
with zipfile.ZipFile("我創(chuàng)建的壓縮包.zip", "r") as zipobj:
zipobj.extractall(dst)
-
編程語言
+關(guān)注
關(guān)注
10文章
1929瀏覽量
34539 -
文件系統(tǒng)
+關(guān)注
關(guān)注
0文章
284瀏覽量
19871 -
代碼
+關(guān)注
關(guān)注
30文章
4722瀏覽量
68230 -
python
+關(guān)注
關(guān)注
55文章
4767瀏覽量
84375
發(fā)布評論請先 登錄
相關(guān)推薦
評論