Python基础总结之第九天开始【python之OS模块对目录的操作、以及操作文件】(新手可相互督促)
年薪20万的梦想。。。
python对文件、目录能做什么?或者说我们需要python替我们做什么?最经常的操作就是对文件的:
打开、关闭、读取、写入、修改、保存等等对目录的操作,无非就是:创建目录、删除目录、更改目录名字等等。
我们先认识一下OS模块,os模块以及子模块path中包含了获取系统信息、以及对系统进行设置的函数。提供了Python
系统和操作系统进行交互的一个接口。
我们怎么使用os模块中的函数呢?看下代码:
import os #导入os模块
我们输入这样一行代码,就代表将OS模块导入在,我们的python文件中,这样我们就可以,使用os模块下面的各个函数了!是不是很简单。
接下来我们认识第一个函数:
getcwd() 该函数用于获取当前工作目录。
import os #导入os模块
print('演示获取当前目录:',os.getcwd()) #使用格式:模块.函数() 记住中间有个点os.getcwd()
我们看到了当前工作目录,那么我们用第二个函数,可以看到当前目录下包含了那些文件或目录。
listdir() 用于看到当前目录下包含了那些文件或目录,并存放在一个列表中。
import os #导入os模块
print(os.listdir(os.getcwd())) #使用格式:os.listdir() 用于列出当前目录包含的文件名和目录名,存放在列表中。
接下来我们看到自己想要找到目录后,我们切换目录。
os.chdir('C:/Users/92938/PycharmProjects') #改变目录,指定一个目录的绝对路径。
print('演示获取当前目录:',os.getcwd()) #显示改变目录后的路径位置
print(os.listdir(os.getcwd())) #显示改变目录后的目录中包含什么文件或目录
接下来我们再看看怎么创建目录:
mkdir() 创建目录,如果在创建目录的时候,创建的目录名与现有的目录名重名,会报异常。
makedirs() 创建目录,与前者区别在于,它可以创建多层级的目录。
我们先创建下目录看下代码的实现:
import os #导入os模块
os.chdir(r'C:\Program Files\tools') #改变目录,指定一个目录的绝对路径。 前面的r是转义字符,前面的总结有讲过它的使用方法。
print('演示获取当前目录:',os.getcwd()) #显示改变目录后的路径位置
print(os.listdir(os.getcwd())) #显示改变目录后的目录中包含什么文件或目录 os.mkdir('tt') #创建一个文件夹
print(os.listdir(os.getcwd())) #查看创建的tt文件夹
mkdir() 创建的文件夹是当前目录的文件夹,不能同时创建多层。
接下来看第二种创建方式:多层创建目录:
import os #导入os模块
os.chdir(r'C:\Program Files\tools') #改变目录,指定一个目录的绝对路径。 前面的r是转义字符,前面的总结有讲过它的使用方法。
print('演示获取当前目录:',os.getcwd()) #显示改变目录后的路径位置
print(os.listdir(os.getcwd())) #显示改变目录后的目录中包含什么文件或目录 os.makedirs('aa/bb/cc')
print(os.listdir(os.getcwd())) #查看创建的aa文件夹
os.chdir(r'C:\Program Files\tools\aa') #查看aa文件夹中是不是有bb文件夹
创建了这么多垃圾文件,我们看看怎么删除文件夹吧:
rmdir() 删除指定的目录(文件夹),如果目录里面有其他目录或文件不是空目录,会报错。
removedirs() 删除指定的目录,可以指定多级 aa/bb/cc 这样会同时删除 aa/bb/cc三个目录。
话不多说看代码:
import os #导入os模块
os.chdir(r'C:\Program Files\tools') #改变目录,指定一个目录的绝对路径。 前面的r是转义字符,前面的总结有讲过它的使用方法。
print('演示获取当前目录:',os.getcwd()) #显示改变目录后的路径位置
print(os.listdir(os.getcwd())) #显示改变目录后的目录中包含什么文件或目录 os.rmdir('tt')
print(os.listdir(os.getcwd())) #查看当前目录下的tt文件夹是不是被删除
rmdir() 不能进行多层级的同时删除目录,如果目录不为空,删除会报错。
再看下多层级同时删除,切记,目录里面需要为空,没有任何文件哦,不然会报错的~~~
import os
os.chdir(r'C:\Program Files\tools') #切换到指定的文件目录
print('查看是不是我们切换的目录地址:',os.getcwd()) #查看是不是我们切换的目录
print(os.listdir(os.getcwd())) #这俩函数组合使用,查看当期目录下面有哪些目录或文件 os.removedirs(r'aa\bb\cc') #多层级删除目录,aa\bb\cc三个空目录同时删除
print(os.listdir(os.getcwd())) #查看删除后还有aa文件目录吗?
最后我们看下怎给当前目录更改名字?
目录的名字更改:
rename() 括号中需要两个参数: 旧文件名,新文件名 记住中间是英文逗号。
renames() 同样的,这个函数可以同时修改多层级目录的名字。比如: aa\bb\cc 改为 dd\ee\ff
看代码吧:
import os #导入os模块
os.chdir(r'C:\Program Files\tools') #切换到指定的路径目录
print(os.listdir(os.getcwd())) #查看当前切换的目录下面有哪些目录
os.mkdir('tt')
print(os.listdir(os.getcwd())) #查看当前目录有没有创建成功tt目录
os.rename('tt','gg')
print(os.listdir(os.getcwd())) #查看当前tt目录是不是变成了gg目录
接下来看多层级同时更改目录名称
import os #导入os模块
os.chdir(r'C:\Program Files\tools') #切换到指定的路径目录
print(os.listdir(os.getcwd())) #查看当前切换的目录下面有哪些目录
os.makedirs(r'aa\bb\cc')
print(os.listdir(os.getcwd())) #查看当前目录有没有创建成功aa目录
os.renames(r'aa\bb\cc',r'dd\ee\ff')
print(os.listdir(os.getcwd())) #查看当前aa目录是不是变成了dd目录
目录的基本操作就是这些,大家要请于练习,如果有问题可以留言哦~
接下来我们看下对文件的操作有哪些常用的函数吧!
文件对于python来说是一个文件对象,不管是对文件有任何操作,我都需要通过open()函数来获取该文件对象并赋值给一个变量。
open(file_name,access_mode='r') 打开文件的函数中有两个参数,第一个参数是file_name:文件名,可以是绝对路径,也可以是相对路径。
第二个参数是access_mode:访问文件的方式:访问文件的方式有这么几种:r、w、a、r+、w+ 接下来我们依次演示:
指针:代表文件中的光标目前所在位置。如图:
开始看代码:
open(file_name,'r') 以读的方式打开文件,文件指针会在文件的开头
file_a =open(r'C:\Program Files\tools\file_a.txt','r')#在绝对路径打开file_a文本文件,记得加文件后缀.txt
open(file_name,'w') 以写的方式打开文件,如果文件存在,会被清空。如果不存在,创建一个文件
file_a =open(r'C:\Program Files\tools\file_a.txt','w')#在绝对路径打开file_a文本文件,记得加文件后缀.txt
open(file_name,'a') 为了在文件的末尾追加内容打开文件,如果文件存在,文件的指针在文件的末尾,如果不存在就创建一个文件
file_a =open(r'C:\Program Files\tools\file_a.txt','a')
现在开始正式的读取文件:
read() 这个方法有一个参数,括号中可以输入数字,表示读取多少个字节的内容。如果不填写,默认读取所有文件内容
以下代码将以次文件截图为依据,我们可以看到文件是txt文本,里面有三行数据,第一行是:123 第二行是:abc 第三行是:789
file_a =open(r'C:\Program Files\tools\file_a.txt','r') #首先我们以支持读写的模式打开文件,然后将文件传递给变量file_a file_read = file_a.read(2) #开始读取文件的内容,读取前两个字符 12
print(file_read) #将读取的内容打印
我们继续读取后面的内容,每次读取两个字节:
file_a =open(r'C:\Program Files\tools\file_a.txt','r') #首先我们以支持读写的模式打开文件,然后将文件传递给变量file_a file_read = file_a.read(2) #开始读取文件的内容,读取前两个字符 12
print(file_read) #将读取的内容打印 file_read2 = file_a.read(2) #再次读取2个字节的内容
print(file_read2) #将读取的内容打印,我们发现第一行只有3这么一个字节了,所以只有3
按字节多少,去读取文本中的内容,这个方法你一定明白了吧!
那么我们用默认的方式,不添加任何参数,直接读取所有的内容:
file_a =open(r'C:\Program Files\tools\file_a.txt','r') #首先我们以支持读写的模式打开文件,然后将文件传递给变量file_a file_read = file_a.read() #开始读取文件的内容,默认不填写参数,默认读取所有的内容
print(file_read) #将读取的内容打印
close() 关闭文件
file_a.close() #关闭文件,多次按字节打开文件后,文件中的指针光标位置会改动,所以处理文件后记得关闭哦
file_a =open(r'C:\Program Files\tools\file_a.txt','r') #首先我们以支持读写的模式打开文件,然后将文件传递给变量file_a file_read = file_a.read() #开始读取文件的内容,默认不填写参数,默认读取所有的内容
print(file_read) #将读取的内容打印 file_a.close() #关闭文件,多次按字节打开文件后,文件中的指针光标位置会改动,所以处理文件后记得关闭哦
有时候,如果我们不知道第一行有多少个字节,但是我们需要的内容就是在第一行,那么我们就要用到它来获取第一行的内容:
readline() 默认获取第一行内容,多次调用,文件指针光标会读取下一行内容。
file_a =open(r'C:\Program Files\tools\file_a.txt','r') #首先我们以支持读写的模式打开文件,然后将文件传递给变量file_a file_read = file_a.readline() #获取第一行内容
print(file_read) #将读取的内容打印 file_read = file_a.readline() #第二次用,所以获取的是第二行的内容
print(file_read) #将读取的内容打印 file_a.close() #关闭文件,多次按字节打开文件后,文件中的指针光标位置会改动,所以处理文件后记得关闭哦
接下来我们看看怎么获取一行内容,并且把内容存在一个list列表中,方便我们操作:
readlines() 它可以获取一行内容,并且把内容存在一个list列表中
file_a =open(r'C:\Program Files\tools\file_a.txt','r') #首先我们以支持读写的模式打开文件,然后将文件传递给变量file_a file_read = file_a.readlines() #获取第一行内容,并把内容放在列表中
print(file_read) #将读取的内容打印,看第一行内容是不是在列表中
print(file_read[1]) #既然是列表,肯定支持元素下标获取我们要得内容
file_a.close() #关闭文件
最后我们看下文件内容的写入,我们知道,刚才的文件中内容是:有三行数据,第一行是:123 第二行是:abc 第三行是:789
现在我们在里面加点料~~~
文件对象内置的有write() 可以向当前文件指针的位置,写入字符串到文件中。
文件对象的内置方法tell() 可以获取到当前文件指针的位置
文件对象的内置方法seek() 可以在文件中前后移动指针的位置,它有两个参数,第一个参数是:offset,表示移动多少字节的位置。第二个参数是:whence,表示从什么地方开始移动。
格式:file_a.seek(offset,whence)
获取当前文件指针的位置:
file_a =open(r'C:\Program Files\tools\file_a.txt','w+') #首先我们以支持读写的模式打开文件,然后将文件传递给变量file_a print(file_a.tell()) #获取当前指针的位置
我们使用w+的方式写入,w+ :如果文件存在,会在文件中写入内容,删除原来的内容。
file_a =open(r'C:\Program Files\tools\file_a.txt','w+') #首先我们以支持读写的模式打开文件,然后将文件传递给变量file_a print(file_a.tell()) #获取当前指针的位置 file_a.write(r'www.baidu.com') #我们在第一行写入内容
print(file_a.tell()) #获取当前指针的位置
先到这里了~~基本的操作都是一样的,大家可以尝试写一下。不懂的记得评论,会回复大家的 ----------------------------------------一个来自坚持笔记的新手
Python基础总结之第九天开始【python之OS模块对目录的操作、以及操作文件】(新手可相互督促)的更多相关文章
- Python基础总结之认识lambda函数、map函数、filter() 函数。第十二天开始(新手可相互督促)
今天周日,白天在学习,晚上更新一些笔记,希望对大家能更好的理解.学习python~ lambda函数,也就是大家说的匿名函数.它没有具体的名称,也可以叫做一句话函数,我觉得也不过分,大家看下代码,来体 ...
- Python基础总结之初步认识---clsaa类(上)。第十四天开始(新手可相互督促)
最近的类看着很疼,坚持就是胜利~~~ python中的类,什么是类?类是由属性和方法组成的.类中可能有很多属性,以及方法. 我们这样定义一个类: 前面是class关键字 后面school是一个类的名字 ...
- Python基础总结之初步认识---class类(中)。第十四天开始(新手可相互督促)
昨天简单的认识类怎么定义,什么是类,类如何调用.今天的笔记会大概补充一些内容,明天的笔记会细致讲解,加深个印象即可 今天我们在了解下:类的属性,类属性属于类也属于实例化对象.也就是说类的实例化对象可以 ...
- (Python基础教程之十二)Python读写CSV文件
Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...
- Python基础学习(一)之Python的概述与环境安装
Python介绍 Python语言介绍 Python是一门高级的.面向对象的.解释性.脚本语言. 高级语言:贴近开发者,对应底层语言,底层语言贴近机器:java.C#.php .ruby 面向对象对应 ...
- Python基础总结之第十天开始【认识模块、包和库】(新手可相互督促)
每天都有一种备课的赶脚~~~ 什么是模块? 在实际的开发过程中,代码量肯定有成千上万行的代码,甚至十几万行代码也很正常吧... 那么这么多的代码如果放在一个文件中,肯定是很不合适的,为了以后程序的编写 ...
- Python基础知识思维导图|自学Python指南
微信公众号[软件测试大本营]回复"python",获取50本python精华电子书. 测试/开发知识干货,互联网职场,程序员成长崛起,终身学习. 现在最火的编程语言是什么?答案就是 ...
- [Python]基础教程(4)、Python 变量类型
Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...
- Python基础-列表推导式、匿名函数、os/sys/time/datetime/pymysql/xlwt/hashlib模块
列表推导式 [表达式 for 变量 in range(n) if 条件] 等效于 for 变量 in in range(n): if 条件: 表达式 优点:书写方便,缺点:不易读 注意:用的是方括号 ...
随机推荐
- 多线程与高并发(三)synchronized关键字
上一篇中学习了线程安全相关的知识,知道了线程安全问题主要来自JMM的设计,集中在主内存和线程的工作内存而导致的内存可见性问题,及重排序导致的问题.上一篇也提到共享数据会出现可见性和竞争现象,如果多线程 ...
- Jenkins+Python+GitLab持续集成
创建任务 登录Jenkins,点击左侧列表的新建选项.输入任务名称,选择构建一个自由风格的软件项目,点击确定. 配置 在任务配置界面,可以设置General标签中的丢弃旧的构建选项,设置保持构建的天数 ...
- resolv.conf 的超时(timeout)与重试(attempts)机制
/etc/resolv.conf 有两个默认的值至关重要,一个是超时的 timeout,一个是重试的 attempts,默认情况下,前者是 5s 后者是 2 次.这个估计很多工程师都不是很在意,一般情 ...
- 关于重写equals()和hashCode()的思考
最近这几天一直对equals()和hashCode()的事搞不清楚,云里雾里的. 为什么重写equals(),我知道. 但是为什么要两个都要重写呢,我就有点迷糊了,所以趁现在思考清楚后记录一下. 起因 ...
- BZOJ 1061:志愿者招募(单纯型)
题目链接 题意 中文题意. 思路 单纯型模板题. 单纯型用来解决线性规划问题. 留坑待填. 算法思路 好长 模板 论文 卿学姐视频 #include <bits/stdc++.h> usi ...
- 微信小程序支付以及微信退款开发
最近公司项目急着测试,需要开发微信小程序+微信支付+微信退款,本着这几天的一些研究,决定记录一下开发的过程. 本着知识分享的原则,希望对大家有所帮助. 本篇针对的是微信小程序的支付开发,如果有对微信公 ...
- RestTemplate真实案例
1. 场景描述 现在越来越的系统之间的交互采用http+json的交互方式,以前用的比较多的HttpClient,后来用的RestTemplate,感觉RestTemplate要比httpClent简 ...
- vmware + opensuse windows如何远程登录到suse上
vmware我还是比较偏向7.1.4版本,其他版本装在win7上似乎有点问题.windows平台下,使用vmware + opensuse的网络配置过程如下: 1. 装完vm后,会在本地连接 ...
- 【题解】P2916 [USACO08NOV]安慰奶牛Cheering up the Cow-C++
原题传送门 这道题用最小生成树来完成,我选用的是kruskal(克鲁斯卡尔)来完成.这道题目在克鲁斯卡尔模板的基础上,有变动的地方只有2处:1.因为必须从一个点出发,而最小生成树最后会让所有点都连通, ...
- Python 爬虫:豆瓣电影Top250,包括电影导演、类型、年份、主演
结果输出到文本文件中. import codecs import requests from bs4 import BeautifulSoup headers={'User-Agent': 'Mozi ...