關於檔案載入及處理方式檔案路徑是否存在,如果不存在就建立此路徑。
#如果不存在路径,就创建一个这样的路径 if not os.path.exists(exp_path): os.mkdir(exp_path)
os.path.exists()
:判斷括號裡的檔案是否存在的意思,括號內的可以是檔案路徑.如果存在就回傳True ,不存在返回False
os.mkdir()
:建立路徑
file_list = os.listdir(dir_path)
filter() 函數用於過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新清單
filter(function, iterable)
function
-- 判斷函數。
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]
list()
^(* ̄(oo) ̄)^
#元組與列表是非常類似的,差別在於元組的元素值不能修改。
元組是放在括號中,列表是放於方括號中
查閱資料後和實驗後,發現和open()的功能差不多,但在進行爬蟲或其他方式得到資料寫入檔案時會有編碼不統一的問題,所以就一般都統一轉換為Unicode編碼。
總之,用codeces,open()更便捷點。
每次按行讀取整個檔案內容,將讀取的內容放到一個清單中,回傳list類型
每次按行讀取整個檔案內容,將讀取的內容放到一個清單中,回傳list類型
1.1 txt檔案讀取
with open("11.txt", 'r') as file: for l in file: idnos.append(l.replace('\n','')) f.close() # 关闭文件,这个可以是个好习惯哦
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 | 開啟一個檔案只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,請建立新文件。 |
a | 開啟一個檔案用於追加。如果該檔案已存在,則檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,請建立新文件進行寫入。 |
rb | 以二進位格式開啟一個檔案用於唯讀。文件指針將會放在文件的開頭。這是預設模式。 |
wb | 以二進位格式開啟一個檔案只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,請建立新文件。 |
ab | 以二進位格式開啟一個檔案用來追加。如果該檔案已存在,則檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,請建立新文件進行寫入。 |
r | 開啟一個檔案用來讀寫。文件指針將會放在文件的開頭。 |
w | 開啟一個檔案用來讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,請建立新文件。 |
a | 開啟一個檔案用於讀寫。如果該檔案已存在,則檔案指標將會放在檔案的結尾。文件開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。 |
rb | 以二進位格式開啟一個檔案用來讀寫。文件指針將會放在文件的開頭。 |
wb | 以二進位格式開啟一個檔案用來讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,請建立新文件。 |
ab | 以二進位格式開啟一個檔案用來追加。如果該檔案已存在,則檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。 |
1.4 逐行讀取txt中所有內容
#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中前兩行的內容
#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 # 创建新文件 newFile = open(newFileName, 'wb') # 把旧文件中的数据,一行一行的进行复制到新文件中 for lineContent in oldFile.readlines(): newFile.write(lineContent) # 关闭文件 oldFile.close() newFile.close()
1.7 檔案的相關操作
檔案重新命名
import os os.rename("毕业论文.txt", "毕业论文-最终版.txt")
刪除檔案
import os os.remove("毕业论文.txt")
建立資料夾
import os os.mkdir("张三")
取得目前目錄
import os os.getcwd()
改變預設目錄
import os os.chdir("../")
取得目錄清單
import os os.listdir("./")
刪除資料夾
import os os.rmdir("张三")
1.8 檔案管理-學生管理系統
註:先建立一個檔案:info_data.data
import time import os # 定一个列表,用来存储所有的学生信息(每个学生是一个字典) info_list = [] def print_menu(): print("---------------------------") print(" 学生管理系统 V1.0") print(" 1:添加学生") print(" 2:删除学生") print(" 3:修改学生") print(" 4:查询学生") print(" 5:显示所有学生") print(" 6:保存数据") print(" 7:退出系统") 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("此用户名已经被占用,请重新输入") return # 如果一个函数只有return就相当于让函数结束,没有返回值 # 定义一个字典,用来存储用户的学生信息(这是一个字典) info = {} # 向字典中添加数据 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(): """加载之前存储的数据""" f = open("info_data.data", "w") f.write(str(info_list)) f.close() def load_data(): """加载之前存储的数据""" global info_list f = open("info_data.data") content = f.read() info_list = eval(content) f.close() def main(): """用来控制整个流程""" # 加载数据(1次即可) load_data() while True: # 1. 打印功能 print_menu() # 2. 获取用户的选择 num = input("请输入要进行的操作(数字):") # 3. 根据用户选择,做相应的事情 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": # 保存数据到文件中 save_data() elif num == "7": # 退出系统 exit_flag = input("亲,你确定要退出么?~~~~(>_<)~~~~(yes or no) ") if exit_flag == "yes": break else: print("输入有误,请重新输入......") input("\n\n\n按回车键继续....") os.system("clear") # 调用Linux命令clear完成清屏 # 程序的开始 main()
#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)])
以上是如何載入和處理Python檔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!