python:关于文件加载及处理方式
作者:开心邮递员 发布时间:2021-03-12 10:17:30
标签:python,文件,加载
关于文件加载及处理
1、检查python
关于文件加载及处理方式文件路径是否存在,如果不存在就创建此路径。
#如果不存在路径,就创建一个这样的路径
if not os.path.exists(exp_path):
os.mkdir(exp_path)
os.path.exists()
:判断括号里的文件是否存在的意思,括号内的可以是文件路径.如果存在就返回True,不存在返回Falseos.mkdir()
:创建路径
2、对文件夹下面的文件名称进行列表排列
file_list = os.listdir(dir_path)
3、过滤不符合要求的文件
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]
4、用于将元组转换为列表
list()
^(* ̄(oo) ̄)^
元组与列表是非常类似的,区别在于元组的元素值不能修改。
元组是放在括号中,列表是放于方括号中
5、打开文件codeces,open()
查阅资料后和实验后,发现和open()的功能差不多,但在进行爬虫或者其他方式得到数据写入文件时会有编码不统一的问题,所以就一般都统一转换为Unicode编码。
总之,用codeces,open()更便捷点。
6、readlines()
每次按行读取整个文件内容,将读取到的内容放到一个列表中,返回list类型
7、strip()
每次按行读取整个文件内容,将读取到的内容放到一个列表中,返回list类型
python文件处理(总结)
1、txt文件
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、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)])
来源:https://blog.csdn.net/weixin_42187536/article/details/123788465
0
投稿
猜你喜欢
- 前言本文主要给大家介绍了关于利用python 3.5检测路由器流量并写入txt的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看
- Python 模块EasyGui详细介绍前言:在Windows想用Python开发一些简单的界面,所以找到了很容易上手的EasyGui库。下
- asp编程手工定义参数的方法: Dim con As ADODB.Connection
- 目录前言数据泵的导入数据泵的导出总结前言今天王子要分享的内容是关于Oracle的一个实战内容,Oracle的数据泵。网上有很多关于此的内容,
- 下载编译器protoc两种方式:1、使用google官方protoc下载地址:https://github.com/google/proto
- 1.在Qt Designer中设计两个简单窗口2.将.ui文件转换成.py文件3.新建**.py文件#-*- coding:utf-8 -*
- 在Golang中,如何将一个结构体转成map? 本文介绍两种方法。第一种是是使用json包解析解码编码。第二种是使用反射,使用反射的效率比较
- 前言:Python基础知识+结构+数据类型Python基础学习列表+元组+字典+集合今天的是Python基础学习的第三篇了,前面的知识点给大
- 本文实例讲述了Python编程判断这天是这一年第几天的方法。分享给大家供大家参考,具体如下:题目:输入某年某月某日,判断这一天是这一年的第几
- [LeetCode] 185.Department Top Three Salaries 系里前三高薪水The Employee&
- Geany中配置python的方法:一、文件下载并安装1、下载Python下载地址:https://www.python.org/downl
- 前言最近在做项目高可用时,需要使用数据同步。由于只有双节点,且采用主主同步可能存在循环同步的风险,故综合考虑采用Mysql主从同步(Mast
- 前言官方手册:https://dev.mysql.com/doc/refman/5.7/en/server-logs.html不管是哪个数据
- 引言Git 中有些操作命令比较长,单词多,不容易记忆。例如把一个dev开发分支合并到master分支,就需要敲:git merge --no
- 文章介绍内容:操作MySQL数据库:创建MySQL数据表;向表中插入记录;其他数据库操作。面试题:如何创建MySQL数据表?如何向MySQL
- 在学习python的过程中,用来练习代码,并且复习数据结构的#coding:utf-8#author:Elvisclass Stack(ob
- TensorBoard是用于可视化图形和其他工具以理解、调试和优化模型的界面。它是一种为机器学习工作流提供测量和可视化的工具。它有助于跟踪损
- Monkey patch就是在运行时对已有的代码进行修改,达到hot patch的目的。Eventlet中大量使用了该技巧,以替换标准库中的
- 本文实例介绍了使用javascript来经验表单数据的方法,如:校验是否为英文,校验是否为数字及校验IP地址等: &l
- 本文实例讲述了Python实现列表删除重复元素的三种常用方法。分享给大家供大家参考,具体如下:给定一个列表,要求删除列表中重复元素。list