最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python:關(guān)于文件加載及處理方式

 更新時(shí)間:2022年09月26日 16:38:52   作者:開(kāi)心郵遞員  
這篇文章主要介紹了python:關(guān)于文件加載及處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

關(guān)于文件加載及處理

1、檢查python

關(guān)于文件加載及處理方式文件路徑是否存在,如果不存在就創(chuàng)建此路徑。

#如果不存在路徑,就創(chuàng)建一個(gè)這樣的路徑
?? ?if not os.path.exists(exp_path):
?? ??? ?os.mkdir(exp_path)
  • os.path.exists():判斷括號(hào)里的文件是否存在的意思,括號(hào)內(nèi)的可以是文件路徑.如果存在就返回True,不存在返回False
  • os.mkdir():創(chuàng)建路徑

2、對(duì)文件夾下面的文件名稱進(jìn)行列表排列

file_list = os.listdir(dir_path)

3、過(guò)濾不符合要求的文件

filter() 函數(shù)用于過(guò)濾序列,過(guò)濾掉不符合條件的元素,返回由符合條件元素組成的新列表

filter(function, iterable)
  • function -- 判斷函數(shù)。
  • iterable -- 可迭代對(duì)象
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) ̄)^

元組與列表是非常類(lèi)似的,區(qū)別在于元組的元素值不能修改。

元組是放在括號(hào)中,列表是放于方括號(hào)中

5、打開(kāi)文件codeces,open()

查閱資料后和實(shí)驗(yàn)后,發(fā)現(xiàn)和open()的功能差不多,但在進(jìn)行爬蟲(chóng)或者其他方式得到數(shù)據(jù)寫(xiě)入文件時(shí)會(huì)有編碼不統(tǒng)一的問(wèn)題,所以就一般都統(tǒng)一轉(zhuǎn)換為Unicode編碼。

總之,用codeces,open()更便捷點(diǎn)。

6、readlines()

每次按行讀取整個(gè)文件內(nèi)容,將讀取到的內(nèi)容放到一個(gè)列表中,返回list類(lèi)型

7、strip()

每次按行讀取整個(gè)文件內(nèi)容,將讀取到的內(nèi)容放到一個(gè)列表中,返回list類(lèi)型 

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)閉文件,這個(gè)可以是個(gè)好習(xí)慣哦

1.2 txt寫(xiě)入 不覆蓋寫(xiě)入

? ? ? ? ? ? with open("d.txt", 'a',encoding='utf-8') as file:
? ? ? ? ? ? ? ? file.write('\n' + '摘要:' + gaiyao)
? ? ? ? ? ? ? ? file.write('\n')
? ? ? ? ? ? file.close()

1.3 各個(gè)文件標(biāo)簽的含義 

訪問(wèn)模式說(shuō)明
r以只讀方式打開(kāi)文件。文件的指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式。
w打開(kāi)一個(gè)文件只用于寫(xiě)入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
a打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫(xiě)入。
rb以二進(jìn)制格式打開(kāi)一個(gè)文件用于只讀。文件指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式。
wb以二進(jìn)制格式打開(kāi)一個(gè)文件只用于寫(xiě)入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
ab以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫(xiě)入。
r+打開(kāi)一個(gè)文件用于讀寫(xiě)。文件指針將會(huì)放在文件的開(kāi)頭。
w+打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
a+打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。文件打開(kāi)時(shí)會(huì)是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫(xiě)。
rb+以二進(jìn)制格式打開(kāi)一個(gè)文件用于讀寫(xiě)。文件指針將會(huì)放在文件的開(kāi)頭。
wb+以二進(jìn)制格式打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
ab+以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫(xiě)。

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("請(qǐng)輸入要拷貝的文件名字:")
# 以讀的方式打開(kāi)文件
oldFile = open(oldFileName,'rb')
# 提取文件的后綴
fileFlagNum = oldFileName.rfind('.')
if fileFlagNum > 0:
? ? fileFlag = oldFileName[fileFlagNum:]
# 組織新的文件名字
newFileName = oldFileName[:fileFlagNum] + '[復(fù)件]' + fileFlag
# 創(chuàng)建新文件
newFile = open(newFileName, 'wb')
# 把舊文件中的數(shù)據(jù),一行一行的進(jìn)行復(fù)制到新文件中
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("張三")

獲取當(dāng)前目錄

import os
os.getcwd()

改變默認(rèn)目錄

import os
os.chdir("../")

獲取目錄列表

import os
os.listdir("./")

刪除文件夾

import os
os.rmdir("張三")

1.8 文件管理 - 學(xué)生管理系統(tǒng)

注:先創(chuàng)建一個(gè)文件:info_data.data

import time
import os
# 定一個(gè)列表,用來(lái)存儲(chǔ)所有的學(xué)生信息(每個(gè)學(xué)生是一個(gè)字典)
info_list = []
def print_menu():
? ? print("---------------------------")
? ? print(" ? ? ?學(xué)生管理系統(tǒng) V1.0")
? ? print(" 1:添加學(xué)生")
? ? print(" 2:刪除學(xué)生")
? ? print(" 3:修改學(xué)生")
? ? print(" 4:查詢學(xué)生")
? ? print(" 5:顯示所有學(xué)生")
? ? print(" 6:保存數(shù)據(jù)")
? ? print(" 7:退出系統(tǒng)")
? ? print("---------------------------")
def add_new_info():
? ? """添加學(xué)生信息"""
? ? global info_list
? ? new_name = input("請(qǐng)輸入姓名:")
? ? new_tel = input("請(qǐng)輸入手機(jī)號(hào):")
? ? new_qq = input("請(qǐng)輸入QQ:")
? ? for temp_info in info_list:
? ? ? ? if temp_info['name'] == new_name:
? ? ? ? ? ? print("此用戶名已經(jīng)被占用,請(qǐng)重新輸入")
? ? ? ? ? ? return ?# 如果一個(gè)函數(shù)只有return就相當(dāng)于讓函數(shù)結(jié)束,沒(méi)有返回值
? ? # 定義一個(gè)字典,用來(lái)存儲(chǔ)用戶的學(xué)生信息(這是一個(gè)字典)
? ? info = {}
? ? # 向字典中添加數(shù)據(jù)
? ? info["name"] = new_name
? ? info["tel"] = new_tel
? ? info["qq"] = new_qq
? ? # 向列表中添加這個(gè)字典
? ? info_list.append(info)
def del_info():
? ? """刪除學(xué)生信息"""
? ? global info_list
? ? del_num = int(input("請(qǐng)輸入要?jiǎng)h除的序號(hào):"))
? ? if 0 <= del_num < len(info_list):
? ? ? ? del_flag = input("你確定要?jiǎng)h除么?yes or no")
? ? ? ? if del_flag == "yes":
? ? ? ? ? ? del info_list[del_num]
? ? else:
? ? ? ? print("輸入序號(hào)有誤,請(qǐng)重新輸入")
def modify_info():
? ? """修改學(xué)生信息"""
? ? global info_list
? ? modify_num = int(input("請(qǐng)輸入要修改的序號(hào):"))
? ? 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("請(qǐng)輸入新的姓名:")
? ? ? ? info_list[modify_num]['tel'] = input("請(qǐng)輸入新的手機(jī)號(hào):")
? ? ? ? info_list[modify_num]['qq'] = input("請(qǐng)輸入新QQ:")
? ? else:
? ? ? ? print("輸入序號(hào)有誤,請(qǐng)重新輸入")
def search_info():
? ? """查詢學(xué)生信息"""
? ? search_name = input("請(qǐng)輸入要查詢的學(xué)生姓名:")
? ? 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("沒(méi)有您要找的信息....")
def print_all_info():
? ? """遍歷學(xué)生信息"""
? ? print("序號(hào)\t姓名\t\t手機(jī)號(hào)\t\tQQ")
? ? i = 0
? ? for temp in info_list:
? ? ? ? # temp是一個(gè)字典
? ? ? ? print("%d\t%s\t\t%s\t\t%s" % (i, temp['name'], temp['tel'], temp['qq']))
? ? ? ? i += 1
def save_data():
? ? """加載之前存儲(chǔ)的數(shù)據(jù)"""
? ? f = open("info_data.data", "w")
? ? f.write(str(info_list))
? ? f.close()
def load_data():
? ? """加載之前存儲(chǔ)的數(shù)據(jù)"""
? ? global info_list
? ? f = open("info_data.data")
? ? content = f.read()
? ? info_list = eval(content)
? ? f.close()
def main():
? ? """用來(lái)控制整個(gè)流程"""
? ? # 加載數(shù)據(jù)(1次即可)
? ? load_data()
? ? while True:
? ? ? ? # 1. 打印功能
? ? ? ? print_menu()
? ? ? ? # 2. 獲取用戶的選擇
? ? ? ? num = input("請(qǐng)輸入要進(jìn)行的操作(數(shù)字):")
? ? ? ? # 3. 根據(jù)用戶選擇,做相應(yīng)的事情
? ? ? ? if num == "1":
? ? ? ? ? ? # 添加學(xué)生
? ? ? ? ? ? add_new_info()
? ? ? ? elif num == "2":
? ? ? ? ? ? # 刪除學(xué)生
? ? ? ? ? ? del_info()
? ? ? ? elif num == "3":
? ? ? ? ? ? # 修改學(xué)生
? ? ? ? ? ? modify_info()
? ? ? ? elif num == "4":
? ? ? ? ? ? # 查詢學(xué)生
? ? ? ? ? ? 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("輸入有誤,請(qǐng)重新輸入......")
? ? ? ? input("\n\n\n按回車(chē)鍵繼續(xù)....")
? ? ? ? os.system("clear") ?# 調(diào)用Linux命令clear完成清屏
# 程序的開(kāi)始
main()

2、csv文件操作

2.1 csv寫(xiě)入

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)])

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

鄂托克旗| 博湖县| 即墨市| 灵丘县| 修武县| 九龙城区| 略阳县| 汤原县| 册亨县| 旌德县| 方城县| 大新县| 长沙市| 大埔县| 岢岚县| 临颍县| 德化县| 桃江县| 潮州市| 卢氏县| 兰西县| 偃师市| 乌拉特前旗| 泸定县| 北流市| 明溪县| 明水县| 神农架林区| 武宣县| 肇源县| 米泉市| 霞浦县| 扶沟县| 宣武区| 炎陵县| 阿城市| 拉孜县| 巴塘县| 香河县| 广宗县| 香格里拉县|