網站首頁 編程語言 正文
一、文件的操作流程
第一,建立文件對象。
第二,調用文件方法進行操作。
第三,關閉文件。
1、打開文件
用python內置的open()函數打開一個文件,創建一個file對象,相關的方法才可以調用它進行讀寫。
f = open(file_name [, access_mode])
file_name:文件名,字符串值
access_mode:打開文件的模式,如只讀,寫入,追加等,這個參數是非強制的,默認文件訪問模式為只讀r。
# 例子
f = open(r'E:\文件目錄\文件的簡單操作.py')
f = open('E:\\文件目錄\\文件的簡單操作.txt')
f = open('E:/文件目錄/文件的簡單操作.py')
f = open('./文件目錄/' + str(file_name), 'w')
print("文件名: ", f.name)
print("是否已關閉 : ", f.closed)
print("訪問模式 : ", f.mode)
文件的訪問模式如下表所示,'r’讀,'w’覆蓋寫,'a’追加寫。
模式 | 描述 |
---|---|
r | 以只讀方式打開文件。這是默認模式 |
rb | 以二進制格式打開文件用于只讀。這是默認模式 |
r+ | 打開文件用于讀寫 |
rb+ | 以二進制格式打開文件用于讀寫 |
w | 打開文件只用于寫入。若文件存在將其覆蓋,若不存在創建新文件 |
wb | 以二進制格式打開文件只用于寫入。若文件存在將其覆蓋,若不存在創建新文件 |
w+ | 打開文件用于讀寫,若文件存在將其覆蓋,若不存在創建新文件 |
wb+ | 以二進制格式打開文件用于讀寫,若文件存在將其覆蓋,若不存在創建新文件 |
a | 打開文件用于追加。若文件存在新的內容會寫入已有內容之后,若不存在創建新文件進行寫入 |
ab | 以二進制格式打開文件用于追加。若文件存在新的內容會寫入已有內容之后,若不存在創建新文件進行寫入 |
a+ | 打開文件用于讀寫。若文件存在,文件打開時會是追加模式,若不存在創建新文件用于讀寫 |
ab+ | 以二進制格式打開文件用于追加。若文件存在,文件打開時會是追加模式,若不存在創建新文件用于讀寫 |
2、文件操作——讀、寫、修改
(1)讀:read()
讀取整篇文章內容
# 打開一個文件
f = open("file.txt", "r",encoding='utf8')
f_read = f.read() # 通過read()進行讀取
print(f_read)
# 關閉打開的文件
f.close()
讀取指定數量的字符
read()方法指定需要讀取的字符數量,無論一個英文字母還是一個漢字都是一個字符。
f_read = f.read(8) # 讀取8個字符
讀取一行內容
readline讀取一行代碼,讀取到第一個換行符就停止。
f_read = f.readline() # 讀取一行內容。
f_read1 = f.readline() # 再讀取一行內容。
把內容以列表的形式輸出
readlines會把內容以列表的形式輸出。
f_read = f.readlines() # 以列表的形式輸出。
(2)寫:write()
文件操作中的寫有兩種:
w:覆蓋寫
a:追加寫
write()方法可將任何字符串(Python字符串也可以是二進制數據)寫入一個打開的文件。write()方法不會在字符串的結尾添加換行符(‘\n’)。
覆蓋寫(w)
對文件的內容進行覆蓋寫入
# 打開一個文件
f = open('file.txt','w',encoding='utf8')
f_w = f.write('hello world')
print(f_w) # 輸出寫入多少字符
# 關閉打開的文件
f.close()
追加寫(a)
在文件末尾進行文件的追加寫入
# 打開一個文件
f = open('file.txt','a',encoding='utf8')
f_w = f.write('python pandas request')
print(f_w) # 輸出寫入多少字符
# 關閉打開的文件
f.close()
寫入可迭代對象(字符串、列表、元祖、字典)
seq = ["文件操作教程 1\n", "文件操作教程 2"]
f.writelines(seq)
(3)修改:replace()
f1 = open('file.txt','r',encoding='utf8') # 原文件
f2 = open('file2.txt','w',encoding='utf8') # 新文件
for line in f1:
if "hello" in line:
line = line.replace("hello","hi python")
f2.write(line)
# 關閉文件
f1.close()
f2.close()
with語句
當with代碼塊執行完畢時,會自動關閉文件釋放內存資源,不用特意加f.close(),而且可以同時對多個文件同時操作。
用with語句重寫修改文件中的代碼:
with open('file.txt','r',encoding='utf8') as f1,open('file2.txt','w',encoding='utf8') as f2:
for line in f1:
if "hello" in line:
line = line.replace("hello","hi python")
f2.write(line)
3、關閉文件
file對象的 close()方法刷新緩沖區里任何還沒寫入的信息,并關閉文件,這之后便不能再進行寫入。
# 打開一個文件
f = open("file.txt", "w")
# 關閉打開的文件
f.close()
二、openpyxl操作excel文件
在openpyxl里面,一個Excel文件對應著一個Workbook對象, 一個Sheet對應著一個Worksheet對象,而一個單元格對應著一個Cell對象。Workbook()創建空白excel,load_workbook(file_name)加載已存在的excel,save()保存Workbook對象。
1、導入模塊
import openpyxl
2、創建文件
# 創建空白excel
wb = openpyxl.Workbook()
3、打開已有excel文件
# 打開已有的xxx.xlsx文件
wb = openpyxl.load_workbook('./文件目錄/' + str(file_name))
4、創建表
sheet0 = wb.create_sheet(title='表1', index=0)
sheet1 = wb.create_sheet(title='表2', index=1)
sheet2 = wb.create_sheet(title='表3', index=2)
sheet3 = wb.create_sheet(title='表4', index=3)
5、操作單元格
# 通過單元格名稱設置,指定單元格的值
sheet0["A1"]='當前時間'
sheet0["B1"]="數據類型"
# 通過行列坐標設置,指定單元格的值
d = sheet0.cell(row=1, column=1, value='當前時間')
# 設置單元格寬度
sheet0.column_dimensions['A'].width = 30.0
sheet0.column_dimensions['B'].width = 30.0
6、設置整行數據
time = datetime.datetime.now().strftime('%F %T') # '2022-10-12 20:05:23'
#time1 = time.strftime('%a %b %d %H:%M:%S %p %Y', time.localtime(time.time())) # (星期 月 日 時:分:秒 上午/下午 年)'Wed Sep 07 17:43:25 PM 2022'
#time = datetime.datetime.now().strftime('%F %T').split(':') # ['2022-09-07 17', '42', '56']
#time_str = time[0] + '-' + time[1] + '-' + time[2] # '2022-09-07 17-42-56'
sheet0.append([time, 'int'])
7、保存文件
wb.save('./文件目錄/' + str(file_name))
原文鏈接:https://blog.csdn.net/weixin_40400335/article/details/127275870
相關推薦
- 2022-07-24 .Net結構型設計模式之享元模式(Flyweight)_基礎應用
- 2023-08-01 v-model 和 .sync 深度解讀
- 2022-02-19 使用.Net?Core實現的一個圖形驗證碼功能_實用技巧
- 2022-08-01 詳解Python圖像形態學處理(開運算,閉運算,梯度運算)_python
- 2023-01-26 python獲取redis?memory使用情況場景分析_python
- 2022-02-04 mybatis @Select jdbctype 可選類型
- 2022-12-10 Input系統之InputReader概要性實例分析_Android
- 2022-07-08 C語言算法學習之雙向鏈表詳解_C 語言
- 最近更新
-
- 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同步修改后的遠程分支