網站首頁 編程語言 正文
當我們用Python
編寫程序時,有時候需要臨時存儲數據且不希望占用多少內存,亦或是需要寫出文件到文件系統供后續程序讀取,這些情況下以創建臨時文件的方式進行處理,既不會干擾本地文件系統,又安全省事。
而通過使用Python
中的標準庫tempfile
,我們就可以很方便的進行臨時文件相關操作,其主要用法有兩種:
創建臨時文件
tempfile
的經典用法之一是使用其TemporaryFile()
配合with
上下文管理器,在本地文件系統的臨時文件目錄下創建具有隨機名稱的文件,并且在with
內的代碼執行完成后,該臨時文件會自動被銷毀:
import os import tempfile with tempfile.TemporaryFile() as f: print(f.name) print(os.path.exists(f.name)) print(os.path.exists(f.name))
基于這個特性,我們可以應用到很多場景下,譬如當我們希望將表格格式的字符串轉換為pandas
數據框時,就可以像下面這樣做:
raw_string='''a,b,c 1,1,1 2,2,2 3,3,3 4,4,4 ''' with tempfile.TemporaryFile('w+') as f: f.write(raw_string) f.seek(0) #將指針移回文件開頭 demo_df=pd.read_CSV(f) demo_df
創建臨時目錄
前面展示了tempfile
創建臨時文件的功能,而有些場景下,我們需要創建臨時文件夾,這可以基于TemporaryDirectory()
來實現,特性類似TemporaryFile()
:
with tempfile.TemporaryDirectory() as p: print(p) print(os.path.exists(p)) print(os.path.exists(p))
典型的應用場景是配合TemporaryDirectory()
和shutil
生成壓縮包文件:
import shutil import zipfile import numpy as np with tempfile.TemporaryDirectory() as p: # 模擬向當前臨時目錄下寫出多個文件 for i in range(100): ( pd .DataFrame(np.random.rand(10, 3), columns=list('ABC')) .to_csv(os.path.join(p, f'demo{i+1}.csv'), index=False) ) # 將當前臨時目錄轉為zip壓縮包 shutil.make_archive('./demo', 'zip', p) # 查看目標壓縮文件內的文件 [file.filename for file in zipfile.ZipFile('demo.zip').filelist]
原文鏈接:https://www.cnblogs.com/feffery/p/17157404.html
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-12-28 C++?Boost?Archive超詳細講解_C 語言
- 2022-09-14 Redis核心原理詳細解說_Redis
- 2023-04-24 Python?argparse中的action=store_true用法小結_python
- 2022-05-04 分享10提高?Python?代碼的可讀性的技巧_python
- 2023-04-19 nginx: [error] CreateFile() “D:\nginx-1.21.6/logs/
- 2023-07-02 jQuery和HTML對某個標簽設置只讀或者禁用屬性的方式_jquery
- 2022-08-28 Python異步發送日志到遠程服務器詳情_python
- 2022-07-12 for循環中var和let的不為人知的秘密
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支