文件处理(二)

CSV文件的读取和写入

CSV文件的操作

csv是逗号分隔符文本格式,常用于数据交换、Excel文件和数据库数据的导入和导出。

与Excel文件不同,CSV文件中:

  • 值没有类型,所有值都是字符串
  • 不能指定字体颜色等样式
  • 不能指定单元格的宽高,不能合并单元格
  • 没有多个工作表
  • 不能嵌入图像图表

Python标准库的模块csv提供了读取和写入csv格式文件的对象。

我们在excel中建立一个简单的表格:另存为csv(逗号分隔)

import csv
with open(r"d:\a.csv", encoding='gbk') as a:
    a_csv = csv.reader(a)    # 创建csv对象,它是一个包含所有数据的列表,每一行为一个元素
    headers = next(a_csv)    # 获得列表对象,包含标题行的信息
    print(headers)
    for row in a_csv:      # 循环打印各行内容
        print(row)

csv.writer对象和csv文件写入

【操作】csv.writer对象写一个csv文件

import csv
headers = ["工号","姓名","年龄","地址","月薪"]
rows = [("1","龙图",18,"2号院","50000"),("2","够吧",19,"1号院","30000")]
with open(r"d:\b.csv","w") as b:
  b_csv = csv.writer(b)    #创建csv对象
  b_csv.writerow(headers)   #写入一行(标题)
  b_csv.writerows(rows)    #写入多行(数据)

os模块_调用操作系统可执行文件_控制台乱码问题

os和os.path模块

os模块可以帮助我们直接对操作系统进行操作。我们可以直接调用操作系统的可执行文件、命令,直接操作文件、目录等等。

⚠️os模块是做系统运维非常重要的基础。

os模块-调用操作系统命令

os.system可以帮助我们直接调用系统的命令

【示例】os.system调用windows系统的记事本程序

import os
os.system("notepad.exe")

【示例】os.system调用windows系统中ping命令

import os
os.system("ping www.baidu.com")

⚠️Linux是命令行操作更容易,我们可以通过os.system可以更加容易的调用相关的命令;

控制台输出中文可能会有乱码问题,可以在file-->setting中设置:

image-20211120181803562

os.startfile:直接调用可执行文件

【示例】运行安装好的微信

import os
os.startfile(r"D:\wechat\WeChat.exe")

os模块_获取文件信息_创建和删除文件夹

os模块-文件和目录操作

我们可以通过前面讲的文件对象实现对于文件内容的读写操作。如果,还需要对文件和目录做其他操作,可以使用osos.path模块。

os模块下常用操作文件的方法

方法名描述
remove(path)删除指定的文件
rename(src,dest)重命名文件或目录
stat(path)返回文件的所有属性
listdir(path)返回path目录下的文件和目录列表

os模块下关于目录操作的相关方法,汇总如下:

方法名描述
mkdir(path)创建目录
makedirs(path1/path2/path3/...)创建多级目录
rmdir(path)删除目录
removedirs(path1/path2...)删除多级目录
getcwd()返回当前工作目录:current work dir
chdir(path)把path设为当前工作目录
walk()遍历目录树
sep当前操作系统所使用的路径分隔符

【示例】os模块:创建、删除目录、获取文件信息等

import os
#打印基本的信息
print(os.name) #windows-->nt  linux-->posix
print(os.sep)  #windows-->\  linux-->/
print(repr(os.linesep))  #windows-->\r\n  linux-->\n
a = '3'
print(a)
print(repr(a))   #repr可以显示数据信息
#获取文件和文件夹的相关信息
print(os.stat("my01.py"))
#关于工作目录的操作
print(os.getcwd())  #获得当前工作目录
os.chdir("d:")   #当前的工作目录就变成了d:的根目录

os.path模块_常用方法

os.path模块

os.path模块提供了目录相关(路径判断、路径切分、路径连接、文件夹遍历)的操作

方法描述
isabs(path)判断path是否绝对路径
isdir(path)判断path是否为目录
isfile(path)判断path是否为文件
exists(path)判断指定路径的文件是否存在
getsize(filename)返回文件的大小
abspath(path)返回绝对路径
dirname(p)返回目录的路径
getatime(filename)返回文件的最后访问时间
getmtime(filename)返回文件的最后修改时间
walk(top,func,arg)递归方式遍历目录
join(path,*paths)连接多个path
split(path)对路径进行分割,以列表形式返回
splitext(path)从路径中分割文件的扩展名

【示例】测试os.path中常用方法

#测试os.path常用方法
import os
import os.path
​
#################获得目录、文件基本信息######################
print(os.path.isabs("d:/a.txt"))  #是否绝对路径
print(os.path.isdir("d:/a.txt"))  #是否目录
print(os.path.isfile("d:/a.txt"))  #是否文件
print(os.path.exists("a.txt"))   #文件是否存在
print(os.path.getsize("a.txt"))   #文件大小
print(os.path.abspath("a.txt"))   #输出绝对路径
print(os.path.dirname("d:/a.txt")) #输出所在目录
​
########获得创建时间、访问时间、最后修改时间##########
print(os.path.getctime("a.txt"))  #返回创建时间
print(os.path.getatime("a.txt"))  #返回最后访问时间
print(os.path.getmtime("a.txt"))  #返回最后修改时间
​
################对路径进行分割、连接操作####################
path = os.path.abspath("a.txt")   #返回绝对路径
print(os.path.split(path))     #返回元组:目录、文件 ('C:\\Users\\Administrator\\PycharmProjects\\mypro_io\\test_os', 'a.txt')
print(os.path.splitext(path))    #返回元组:路径、扩展名 ('C:\\Users\\Administrator\\PycharmProjects\\mypro_io\\test_os\\a', '.txt')
print(os.path.join("aa","bb","cc")) #返回路径:aa/bb/cc

【示例】列出指定目录下所有的.py文件,并输出文件名

#列出指定目录下所有的.py文件,并输出文件名
import os
import os.path
​
path = os.getcwd()
file_list = os.listdir(path) #列出子目录和子文件
for filename in file_list:
    pos = filename.rfind(".")
    if filename[pos+1:]=="py":
      print(filename,end="\t")
​
​
print("##################")
file_list2 = [filename for filename in os.listdir(path) if filename.endswith(".py") ]
for filename in file_list2:
  print(filename,end="\t")

os模块_使用walk递归遍历所有子目录和子文件

walk()递归遍历所有文件和目录

os.walk() 方法是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。格式如下:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

其中,top:是要遍历的目录。topdown:可选,True,先遍历top目录再遍历子目录。

返回三元组(rootdirsfiles):

root:当前正在遍历的文件夹本身

dirs:一个列表,该文件夹中所有的目录的名字

files:一个列表,该文件夹中所有的文件的名字

【示例】使用walk()递归遍历所有文件和目录

import os
​
path = os.getcwd()
list_files = os.walk(path,topdown=False)
​
for root,dirs,files in list_files:
  for name in files:
    print(os.path.join(root,name))
  for name in dirs:
    print(os.path.join(root,name))

shutil模块_文件和目录的拷贝

shutil模块(拷贝和压缩)

shutil模块是python标准库中提供的,主要用来做文件和文件夹的拷贝、移动、删除等;还可以做文件和文件夹的压缩、解压缩操作。

os模块提供了对目录或文件的一般操作。shutil模块作为补充,提供了移动、复制、压缩、解压等操作,这些os模块都没有提供。

【示例】实现文件的拷贝

import shutil
​
#copy文件内容
shutil.copyfile("a.txt","a_copy.txt")

【示例】实现将文件夹所有内容压缩(使用shutil模块)

import shutil
import zipfile
#将"电影/学习"文件夹下所有内容压缩到"音乐2"文件夹下生成movie.zip
#shutil.make_archive("音乐2/movie","zip","电影/学习")
​
#压缩:将指定的多个文件压缩到一个zip文件
#z = zipfile.ZipFile("a.zip","w")
#z.write("1.txt")
#z.write("2.txt")
#z.close()

【示例】实现将压缩包解压缩到指定文件夹(使用shutil模块)

import shutil
import zipfile
#解压缩:
z2 = zipfile.ZipFile("a.zip","r")
z2.extractall("d:/") #设置解压的地址
z2.close()

递归算法原理

递归遍历目录下所有文件

【示例】使用递归算法遍历目录下所有文件

import os
allfile=[]

def getFiles(path,level):
  childFiles = os.listdir(path)
  for file in childFiles:
    filepath = os.path.join(path,file)
    if os.path.isdir(filepath):
      getFiles(filepath,level+1)
    allfile.append("\t"*level+filepath)


getFiles(os.getcwd(),0)


for f in reversed(allfile):
  print(f)

递归算法_目录树结构的展示

import os
import os.path
​
#递归遍历目录树
def my_print_file(path,level):
  child_files = os.listdir(path)
  for file in child_files:
    file_path = os.path.join(path,file)
    print("\t"*level+file_path[file_path.rfind(os.sep)+1:])
    if os.path.isdir(file_path):
      my_print_file(file_path,level+1)
​
my_print_file("电影",0)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/466626.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

全网最全100个AI工具导航网站合集

随着ChatGPT年前的爆火,人工智能也变成当今最热门的领域之一,它正在改变着我们的生活和工作方式。无论你是想要学习人工智能的基础知识,还是想要利用人工智能来提升你的业务效率和创新能力,都需要找到合适的AI工具来帮助你实现目标…

VS Code安装Live Server插件搭建web网页结合内网穿透实现公网访问

文章目录 前言1. 编写MENJA小游戏2. 安装cpolar内网穿透3. 配置MENJA小游戏公网访问地址4. 实现公网访问MENJA小游戏5. 固定MENJA小游戏公网地址 正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…

数仓建模简介

1 建模的意义 如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方…

docker小白第十二天

docker小白第十二天 docker network简介 docker不启动时默认的网络情况。 # 停止docker服务 systemctl stop docker.socket systemctl stop docker # 查看docker镜像 docker images输入查看docker镜像命令后,显示未连接到docker服务器 docker启动时网络情况 sy…

async与defer的区别

原文解释 async vs defer attributes - Growing with the Web

【OpenCV • c++】图像平滑处理(1) —— 线性滤波

文章目录 一、平滑处理二、图像滤波三、邻域算子与线性邻域滤波四、方框滤波代码演示 一、平滑处理 平滑处理也称为模糊处理,是一种简单且使用频率很高的图像处理方法,平滑处理的用途有很多,最常见的是用来减少图像上的噪点或者失真。在涉及到…

资深老鸟,性能测试-TPS上不去分析+电商系统TPS计算(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、性能测试-TPS上…

YOLOv9详解

1.概述 在逐层进行特征提取和空间转换的过程中,会损失大量信息,例如图中的马在建模过程中逐渐变得模糊,从而影响到最终的性能。YOLOv9尝试使用可编程梯度信息PGI解决这一问题。 具体来说, PGI包含三个部分,&#xff0…

C语言例:表达式 45-35+1^2 的值

代码如下&#xff1a; #include<stdio.h> int main(void) {int a;a 4&5-3&&51^2;printf("4&5-3&&51^2 %d\n",a);return 0; } 结果如下&#xff1a;

保姆级教学!微信小程序设计全攻略!

微信小程序开启了互联网软件的新使用模式。在各种微信小程序争相抢占流量的同时&#xff0c;如何设计微信小程序&#xff1f;让用户感到舒适是设计师在产品设计初期应该考虑的问题。那么如何做好微信小程序的设计呢&#xff1f;即时设计总结了以下设计指南&#xff0c;希望对准…

win10 使用 IIS 搭建 FTP

0. 背景 首先描述一下需求&#xff0c;大概情况就是&#xff0c;视频文件是存储在笔记本电脑里面&#xff0c;然后偶尔需要投屏到电视上。之前考虑过是否可以通过U盘拷贝的方式&#xff0c;后来发现不行&#xff0c;这样太局限了&#xff0c;需要先明确可能用到的教程&#xf…

探秘atoi与atof的模拟之路:从原理到实践的全能指南!

目录 ​编辑 一.atoi及atof库函数的工作原理 1.1atoi 1.2atof 1.3使用时的注意事项 注意事项 1. 检查输入字符串是否为 NULL 2. 检查字符串是否仅包含有效的数字字符 3. 检查转换结果是否在预期范围内 4. 使用更健壮的替代函数 二. 模拟实现atoi和atof 2.1模拟 atoi…

服务器相关知识点总结

一、服务器概述 1.服务器的定义 服务器是计算机的一种&#xff0c;是网络中为客户端计算机提供各种服务的高性能的计算机。服务器在网络操作系统的控制下&#xff0c;将与其连接的硬盘、磁带、打印机以及昂贵的专用通讯设备提供给网络上的客户站点共享&#xff0c;也能为网络用…

基于SpringBoot的后勤管理系统【附源码】

后勤管理系统开发说明 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myecli…

MySQL | CRUD

目录 1. Create 2. Retrieve 2.1. SELECT列 2.1.1. 全列查询 2.1.2. 指定列查询 2.1.3. 查询字段为表达式 2.1.4. 为查询结果指定别名 2.1.5. 结果去重 2.2. WHERE条件 2.2.1. 年龄小于19的同学 2.2.2. id在2~3的同学 2.2.3. id为1和4的同学 2.2.4. 姓张的同学及张…

Android启动优化

文章目录 一、启动分析1.1 启动过程分析1.2 启动问题分析 二、优化工具三、业务梳理3.1 方法论3.2 案例 四、其他优化方式4.1 布局优化4.2 线程优化4.3 GC优化4.4 系统调用优化 五、防劣化5.1 性能监控和测试5.2 代码审查 六、总结 一、启动分析 1.1 启动过程分析 Android应用…

【C语言】linux内核pci_save_state

一、中文注释 //include\linux\pci.h /* 电源管理相关的例程 */ int pci_save_state(struct pci_dev *dev);//drivers\pci\pci.c /*** pci_save_state - 在挂起前保存PCI设备的配置空间* dev: - 我们正在处理的PCI设备*/ int pci_save_state(struct pci_dev *dev) {int i;/* X…

R语言:microeco:一个用于微生物群落生态学数据挖掘的R包:第七:trans_network class

# 网络是研究微生物生态共现模式的常用方法。在这一部分中&#xff0c;我们描述了trans_network类的所有核心内容。 # 网络构建方法可分为基于关联的和非基于关联的两种。有几种方法可以用来计算相关性和显著性。 #我们首先介绍了基于关联的网络。trans_network中的cal_cor参数…

mybatis项目中配置sql提示

2023版的idea好像内置了这个功能。 第一步&#xff1a; 第二步&#xff1a;第一步完成后user会爆红&#xff0c;这时我们需要连接数据库。

个人简历主页搭建系列-03:Hexo+Github Pages 介绍,框架配置

今天的更新内容主要是了解为什么选择这个网站搭建方案&#xff0c;以及一些前置软件的安装。 Why Hexo? 首先我们了解一下几种简单的网站框架搭建方案&#xff0c;看看对于搭建简历网站的需求哪个更合适。 在 BuiltWith&#xff08;网站技术分析工具&#xff09;上我们可以…