python:關(guān)于文件加載及處理方式
關(guān)于文件加載及處理
1、檢查python
關(guān)于文件加載及處理方式文件路徑是否存在,如果不存在就創(chuàng)建此路徑。
#如果不存在路徑,就創(chuàng)建一個這樣的路徑 ?? ?if not os.path.exists(exp_path): ?? ??? ?os.mkdir(exp_path)
os.path.exists()
:判斷括號里的文件是否存在的意思,括號內(nèi)的可以是文件路徑.如果存在就返回True,不存在返回Falseos.mkdir()
:創(chuàng)建路徑
2、對文件夾下面的文件名稱進行列表排列
file_list = os.listdir(dir_path)
3、過濾不符合要求的文件
filter() 函數(shù)用于過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表
filter(function, iterable)
function
-- 判斷函數(shù)。iterable
-- 可迭代對象
def is_odd(n): ? ? return n % 2 == 1 ? newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) print(newlist)
[1, 3, 5, 7, 9]
4、用于將元組轉(zhuǎn)換為列表
list()
^(* ̄(oo) ̄)^
元組與列表是非常類似的,區(qū)別在于元組的元素值不能修改。
元組是放在括號中,列表是放于方括號中
5、打開文件codeces,open()
查閱資料后和實驗后,發(fā)現(xiàn)和open()的功能差不多,但在進行爬蟲或者其他方式得到數(shù)據(jù)寫入文件時會有編碼不統(tǒng)一的問題,所以就一般都統(tǒng)一轉(zhuǎn)換為Unicode編碼。
總之,用codeces,open()更便捷點。
6、readlines()
每次按行讀取整個文件內(nèi)容,將讀取到的內(nèi)容放到一個列表中,返回list類型
7、strip()
每次按行讀取整個文件內(nèi)容,將讀取到的內(nèi)容放到一個列表中,返回list類型
python文件處理(總結(jié))
1、txt文件
1.1 txt文件讀取
? ? ? ? with open("11.txt", 'r') as file: ? ? ? ? ? ? for l in file: ? ? ? ? ? ? ? ? idnos.append(l.replace('\n','')) ? ? ? ? f.close() ?# 關(guān)閉文件,這個可以是個好習慣哦
1.2 txt寫入 不覆蓋寫入
? ? ? ? ? ? with open("d.txt", 'a',encoding='utf-8') as file: ? ? ? ? ? ? ? ? file.write('\n' + '摘要:' + gaiyao) ? ? ? ? ? ? ? ? file.write('\n') ? ? ? ? ? ? file.close()
1.3 各個文件標簽的含義
訪問模式 | 說明 |
---|---|
r | 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。 |
w | 打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
a | 打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進行寫入。 |
rb | 以二進制格式打開一個文件用于只讀。文件指針將會放在文件的開頭。這是默認模式。 |
wb | 以二進制格式打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
ab | 以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進行寫入。 |
r+ | 打開一個文件用于讀寫。文件指針將會放在文件的開頭。 |
w+ | 打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
a+ | 打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結(jié)尾。文件打開時會是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫。 |
rb+ | 以二進制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭。 |
wb+ | 以二進制格式打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
ab+ | 以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫。 |
1.4 逐行讀取txt中所有內(nèi)容
#coding=utf-8 f = open('11.txt', 'r') content = f.readlines() print(type(content)) i=1 for temp in content: ? ? print("%d:%s" % (i, temp)) ? ? i += 1 f.close()
1.5 讀取txt中 前兩行的內(nèi)容
#coding=utf-8 f = open('11.txt', 'r') content = f.readline() print("1:%s" % content) content = f.readline() print("2:%s" % content) f.close()
1.6 文件拷貝
# 提示輸入文件 oldFileName = input("請輸入要拷貝的文件名字:") # 以讀的方式打開文件 oldFile = open(oldFileName,'rb') # 提取文件的后綴 fileFlagNum = oldFileName.rfind('.') if fileFlagNum > 0: ? ? fileFlag = oldFileName[fileFlagNum:] # 組織新的文件名字 newFileName = oldFileName[:fileFlagNum] + '[復件]' + fileFlag # 創(chuàng)建新文件 newFile = open(newFileName, 'wb') # 把舊文件中的數(shù)據(jù),一行一行的進行復制到新文件中 for lineContent in oldFile.readlines(): ? ? newFile.write(lineContent) # 關(guān)閉文件 oldFile.close() newFile.close()
1.7 文件的相關(guān)操作
文件重命名
import os os.rename("畢業(yè)論文.txt", "畢業(yè)論文-最終版.txt")
刪除文件
import os os.remove("畢業(yè)論文.txt")
創(chuàng)建文件夾
import os os.mkdir("張三")
獲取當前目錄
import os os.getcwd()
改變默認目錄
import os os.chdir("../")
獲取目錄列表
import os os.listdir("./")
刪除文件夾
import os os.rmdir("張三")
1.8 文件管理 - 學生管理系統(tǒng)
注:先創(chuàng)建一個文件:info_data.data
import time import os # 定一個列表,用來存儲所有的學生信息(每個學生是一個字典) info_list = [] def print_menu(): ? ? print("---------------------------") ? ? print(" ? ? ?學生管理系統(tǒng) V1.0") ? ? print(" 1:添加學生") ? ? print(" 2:刪除學生") ? ? print(" 3:修改學生") ? ? print(" 4:查詢學生") ? ? print(" 5:顯示所有學生") ? ? print(" 6:保存數(shù)據(jù)") ? ? print(" 7:退出系統(tǒng)") ? ? print("---------------------------") def add_new_info(): ? ? """添加學生信息""" ? ? global info_list ? ? new_name = input("請輸入姓名:") ? ? new_tel = input("請輸入手機號:") ? ? new_qq = input("請輸入QQ:") ? ? for temp_info in info_list: ? ? ? ? if temp_info['name'] == new_name: ? ? ? ? ? ? print("此用戶名已經(jīng)被占用,請重新輸入") ? ? ? ? ? ? return ?# 如果一個函數(shù)只有return就相當于讓函數(shù)結(jié)束,沒有返回值 ? ? # 定義一個字典,用來存儲用戶的學生信息(這是一個字典) ? ? info = {} ? ? # 向字典中添加數(shù)據(jù) ? ? info["name"] = new_name ? ? info["tel"] = new_tel ? ? info["qq"] = new_qq ? ? # 向列表中添加這個字典 ? ? info_list.append(info) def del_info(): ? ? """刪除學生信息""" ? ? global info_list ? ? del_num = int(input("請輸入要刪除的序號:")) ? ? if 0 <= del_num < len(info_list): ? ? ? ? del_flag = input("你確定要刪除么?yes or no") ? ? ? ? if del_flag == "yes": ? ? ? ? ? ? del info_list[del_num] ? ? else: ? ? ? ? print("輸入序號有誤,請重新輸入") def modify_info(): ? ? """修改學生信息""" ? ? global info_list ? ? modify_num = int(input("請輸入要修改的序號:")) ? ? if 0 <= modify_num < len(info_list): ? ? ? ? print("你要修改的信息是:") ? ? ? ? print("name:%s, tel:%s, QQ:%s" % (info_list[modify_num]['name'], ? ? ? ? ? ? info_list[modify_num]['tel'],info_list[modify_num]['qq'])) ? ? ? ? info_list[modify_num]['name'] = input("請輸入新的姓名:") ? ? ? ? info_list[modify_num]['tel'] = input("請輸入新的手機號:") ? ? ? ? info_list[modify_num]['qq'] = input("請輸入新QQ:") ? ? else: ? ? ? ? print("輸入序號有誤,請重新輸入") def search_info(): ? ? """查詢學生信息""" ? ? search_name = input("請輸入要查詢的學生姓名:") ? ? for temp_info in info_list: ? ? ? ? if temp_info['name'] == search_name: ? ? ? ? ? ? print("查詢到的信息如下:") ? ? ? ? ? ? print("name:%s, tel:%s, QQ:%s" % (temp_info['name'], ? ? ? ? ? ? ? ? temp_info['tel'], temp_info['qq'])) ? ? ? ? ? ? break ? ? else: ? ? ? ? print("沒有您要找的信息....") def print_all_info(): ? ? """遍歷學生信息""" ? ? print("序號\t姓名\t\t手機號\t\tQQ") ? ? i = 0 ? ? for temp in info_list: ? ? ? ? # temp是一個字典 ? ? ? ? print("%d\t%s\t\t%s\t\t%s" % (i, temp['name'], temp['tel'], temp['qq'])) ? ? ? ? i += 1 def save_data(): ? ? """加載之前存儲的數(shù)據(jù)""" ? ? f = open("info_data.data", "w") ? ? f.write(str(info_list)) ? ? f.close() def load_data(): ? ? """加載之前存儲的數(shù)據(jù)""" ? ? global info_list ? ? f = open("info_data.data") ? ? content = f.read() ? ? info_list = eval(content) ? ? f.close() def main(): ? ? """用來控制整個流程""" ? ? # 加載數(shù)據(jù)(1次即可) ? ? load_data() ? ? while True: ? ? ? ? # 1. 打印功能 ? ? ? ? print_menu() ? ? ? ? # 2. 獲取用戶的選擇 ? ? ? ? num = input("請輸入要進行的操作(數(shù)字):") ? ? ? ? # 3. 根據(jù)用戶選擇,做相應的事情 ? ? ? ? if num == "1": ? ? ? ? ? ? # 添加學生 ? ? ? ? ? ? add_new_info() ? ? ? ? elif num == "2": ? ? ? ? ? ? # 刪除學生 ? ? ? ? ? ? del_info() ? ? ? ? elif num == "3": ? ? ? ? ? ? # 修改學生 ? ? ? ? ? ? modify_info() ? ? ? ? elif num == "4": ? ? ? ? ? ? # 查詢學生 ? ? ? ? ? ? search_info() ? ? ? ? elif num == "5": ? ? ? ? ? ? # 遍歷所有的信息 ? ? ? ? ? ? print_all_info() ? ? ? ? elif num == "6": ? ? ? ? ? ? # 保存數(shù)據(jù)到文件中 ? ? ? ? ? ? save_data() ? ? ? ? elif num == "7": ? ? ? ? ? ? # 退出系統(tǒng) ? ? ? ? ? ? exit_flag = input("親,你確定要退出么?~~~~(>_<)~~~~(yes or no) ") ? ? ? ? ? ? if exit_flag == "yes": ? ? ? ? ? ? ? ? break ? ? ? ? else: ? ? ? ? ? ? print("輸入有誤,請重新輸入......") ? ? ? ? input("\n\n\n按回車鍵繼續(xù)....") ? ? ? ? os.system("clear") ?# 調(diào)用Linux命令clear完成清屏 # 程序的開始 main()
2、csv文件操作
2.1 csv寫入
with open('新1.csv', 'a', encoding='utf-8-sig', newline='') as f: ?? ?csv_writer = csv.writer(f, delimiter=',') ?? ?csv_writer.writerow( ?? ??? ?[str(name), str(zijin), str(guimo), str(jingli), str(phone1), str(phone2),str(chanpin)])
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
安裝pytorch報錯torch.cuda.is_available()=false問題的解決過程
最近想用pytorch,因此裝了pytorch,但是碰到了問題,下面這篇文章主要給大家介紹了關(guān)于安裝pytorch報錯torch.cuda.is_available()=false問題的解決過程,需要的朋友可以參考下2022-05-05淺談python內(nèi)置函數(shù)callable的用法
這篇文章主要介紹了淺談python內(nèi)置函數(shù)callable的用法, callable函數(shù)可用于判斷一個對象是否可以被調(diào)用,若對象可以被調(diào)用則返回True,反之則返回False,需要的朋友可以參考下2023-04-04