python--目录操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python--目录操作相关的知识,希望对你有一定的参考价值。
参考技术A 一、os.getcwd()获取当前工作目录,即当前Python脚本工作的目录路径。
二、os. chdir(path)
改变当前脚本工作目录;相当于shell下的cd命令。
三、os.pardir
返回当前目录的父目录('..')
四、获取当前使用的操作系统类型(其中 ‘nt’ 是 windows,’posix’ 是linux 或者 unix)。
五、os.mkdir(path [, mode=0777])
生成单级目录;相当于linux中的mkdir dirname。参数mode表示生成的目录的权限,默认是超级权限,也就是0777。如果重复创建,会报错
六、os.makedirs(path [, mode=0777])
可生成多层递归目录,父目录如果不存在,递归生成。参数mode表示生成的目录的权限,默认是超级权限,也就是0777。
七、os.removedirs(path)
若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依次类推。
八、os.rmdir(path)
删除单级空目录,若目录不为空则无法删除,会报错;相当Linux中的rmdir dirname。
九、os.listdir(path)
列出指定目录下的所有文件和子目录,包括隐藏文件或目录,并以列表形式返回。
十、os.remove(filePath)
删除一个指定的文件,参数filePath表示文件所在的路径。
注意:该方法只能删除文件,不能删除目录。
十一、os.rename(oldname, newname)
重命名文件/目录。
十二、os.access(path, mode)
输出文件权限模式。
十三、os.chmod(path, mode)
修改文件的权限。
十四、os.walk(top, topdown=True, onerror=None, followlinks=False)
➢top:表示需要遍历的目录树的路径。
➢topdown的默认值是“True”,表示首先返回目录树下的文件,然后遍历目录树下的子目录。值设为False时,则表示先遍历目录树下的子目录,返回子目录下的文件,最后返回根目录下的文件。
➢onerror的默认值是“None”,表示忽略文件遍历时产生的错误。如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历。
➢该函数返回一个列表,列表中的每一个元素都是一个元组,该元组有3个元素,分别表示每次遍历的路径名,目录列表和文件列表。
➢默认情况下,os.walk 不会遍历软链接指向的子目录,若有需要请将followlinks设定为true
十五、os.path.split(path)
将path分割成目录和文件名(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在),并存于元组中返回。
十六、os.path.exists(path)
判断path是否存在,如果存在返回True,否则返回False。
十七、os.path.isfile(path)
判断path是否是文件,如果是返回True,否则返回False。
十八、os.path.isdir(path)
判断path是否是目录,如果是目录返回True,否则返回False。
十九、os.path.getsize(name)
获得文件大小,如果name是目录返回结果是0L或者4096L;如果name代表的目录或文件不存在,则会报WindowsError异常。
二十、os.path.join(a, *p)
连接两个或更多的路径名,中间以“\”分隔,如果所给的参数中都是绝对路径名,那先给的绝对路径将会被丢弃。
二十一、os.path.getatime(filename)
返回文件的最后访问时间,返回的是时间戳。
二十二、os.path.getctime(filename)
以时间戳的形式返回文件或目录的创建时间,在Unix系统上是文件最近更改的时间,在Windows上是文件或目录的创建时间。
1.基础题:
检验给出的路径是否是一个文件:os.path.isfile("D:\\test.txt")
检验给出的路径是否是一个目录:os.path.isdir("D:\\test.txt")
判断是否是绝对路径:os.path.isabs("D:\\test.txt")
检验给出的路径是否真地存在:
2.返回一个路径的目录名和文件名 :os.listdir("D:\\")
3.分离文件名与扩展名 :os.path.splitext("D:\\test.txt")
4.找出某个目录下所有的文件,并在每个文件中写入“gloryroad” :
>>> for files in os.walk("D:\\test"):
... print(files)
...
('D:\\test', [], ['a.txt', 'b.txt', 'test.txt', 'test1.txt'])
>>> with open("D:\\test\\a.txt","w+") as f:
... f.write("gloryroad")
5.如果某个目录下文件名包含txt后缀名,则把文件后面追加写一行“被我找到了!”
6. 命题练习:
1) 一个目录下只有文件(自己构造),拷贝几个文件(手工完成)
2 )用listdir函数获取所有文件,如果文件的创建时间是今天,那么就在文件里面写上文件的路径、文件名和文件扩展名
3) 如果不是今天创建(获取文件的创建时间,并转化为时间格式,判断是否今天),请删除
4 )计算一下这个程序的执行耗时
7.删除某个目录下的全部文件
8.统计某个目录下文件数和目录个数
9.使用程序建立一个多级的目录,在每个目录下,新建一个和目录名字一样的txt文件
10. 查找某个目录下是否存在某个文件名
11. 用系统命令拷贝文件
12.输入源文件所在路径和目标目录路径,然后实现文件拷贝功能
13.遍历某个目录下的所有图片,并在图片名称后面增加
14、遍历指定目录下的所有文件,找出其中占用空间最大的前3个文件
15、过滤py源码中的#注释,另存为文件result.py,并执行result.py,断言是否执行成功
16、文件访问,提示输入数字 N 和文件 F, 然后显示文件 F 的前 N 行.
17、从命令行接受1个路径如:c:\a\b\c\1.py, 实现1个函数创建目录a\b\c,创建文件1.py,实现1个函数删除已创建的目录及文件
18、有一个ip.txt,里面每行是一个ip,实现一个函数,ping 每个ip的结果,把结果记录存到ping.txt中,格式为ip:0或ip:1 ,0代表ping成功,1代表ping失败
19、实现DOS命令执行功能,接受输入命令并执行,然后把执行结果和返回码打印到屏幕
20、文件访问
访问一存在多行的文件,实现每隔一秒逐行显示文本内容的程序,每次显示文本文件的 5行, 暂停并向用户提示“输入任意字符继续”,按回车键后继续执行,直到文件末尾。
显示文件的格式为:[当前时间] 一行内容,比如:[2016-07-08 22:21:51] 999370this is test
Python3目录操作
Python3 目录操作
常见的目录操作:
- 显示当前目录
- 切换目录
- 新建、删除目录、移动、复制
- 显示目录内容
- 判断目录、文件是否存在
目录操作常用的函数如下:
- os.listdir() # 列出目录下的内容
- os.getcwd() # 显示当前工作路径
- os.chdir() # 切换工作目录
- os.mkdir() # 新建目录
- os.path.exists() # 判断目录是否存在
- os.path.isdir() # 判断是否是目录
示例代码1:
#!/usr/bin/python3
import os
test_path = r‘D:\python‘
print(os.listdir(test_path))
输出内容为一个列表,由于内容太多这里暂不贴出了
示例代码2:
#!/usr/bin/python3
import os
print(os.getcwd()) # 获取当前工作目录
os.chdir(‘..‘) # 切换目录
print(os.getcwd())
os.mkdir(‘testdir‘) #创建路径
print(os.listdir())
输出:
‘D:pythonjupyter‘
‘D:python‘
[‘.ipynb_checkpoints‘,
‘bak‘,
‘jupyter‘,
‘project‘,
‘test.txt‘,
‘testdir‘,
‘Untitled.ipynb‘,
]
路径就是一条字符串
- 左右斜线
- os.path.join()
- os.path.exists()
- os.path.isdir()
示例代码:
#!/usr/bin/python3
import os
url1 = os.path.join(‘a‘, ‘b‘) # 路径拼接
print(url1)
print(os.path.exists(r‘D:python‘)) # 判断路径存不存在
print(os.path.isdir(r‘D:python‘)) # 判断是否是路径
输出:
‘a‘
True
True
相对路径与绝对路径
- os.path.abspath()
- os.path.isabs()
- os.path.relpath()
示例代码:
#!/usr/bin/python3
import os
url1 = os.path.abspath(‘.‘) # 得到.的绝对路径
print(url1)
print(os.path.isabs(‘.‘)) # 判断是否是绝对路径
url2 = os.path.relpath(‘testdir‘, ‘D:python estdir‘) # 得到testdir的相对路径
print(url2)
输出:
‘D:python‘
False
‘..python estdir‘
命名管理
路径各级名称
- path.split(os.path.sep) 前边的path是指的是一个变量
- os.path.basename()
- os.path.dirname()
删除文件shutil模块
- os.unlink
- shutil.rmtree(path)
复制、移动
- copy
- copytree
- move
示例代码1:
#!/usr/bin/python3
import os
dirname = r‘D:python estdir‘
print(os.path.sep) # 显示路径分隔符
namelist = dirname.split(os.path.sep)
print(namelist)
namelist1 = os.path.split(dirname) # 用最后的一个分隔符分开
print(namelist1)
filename = os.path.splitext(r‘D:pythonxx.py‘) # 能取到目录下文件的后缀名
print(filename)
urlname = os.path.basename(dirname) # 找到最后一个目录的名字
print(urlname)
filename1 = os.path.basename(r‘D:pythonxx.txt‘) # 还可以取到文件名
print(filename1)
urlname1 = os.path.dirname(path) # 取除最后一个目录之前的部分
print(urlname1)
输出:
‘‘
[‘D:‘, ‘python‘, ‘testdir‘]
(‘D:python‘, ‘testdir‘)
(‘D:python*‘, ‘.py‘)
‘testdir‘
‘xx.txt‘
‘D:python‘
示例代码2:
#!/usr/bin/python3
import os
import shutil
os.unlink(r‘D:pythonxx.txt‘) # 删除文件xx.txt
shutil.rmtree(‘testdir‘) # 删除testdir目录
shutil.copytree(‘./test‘, ‘./test1‘) # 复制目录
shutil.copy(‘./ss.txt‘, ‘./ss1.txt‘) # 复制文件
shutil.move(‘./ss1.txt‘, ‘ss2.txt‘) # 移动(重命名)文件
只要我想要的文件格式
文件属性
- os.path.getsize()
- os.path.isfile()
- os.stat()
后缀名
- split
- [-3:]
- re
- endswith
示例代码1:
#!/usr/bin/python3
import os
filename = r‘D:python est.py‘
os.path.getsize(filename)/1024 # 查看文件大小,以字节为单位
dirname = r‘D:python‘ # 获取目录的大小
os.path.getsize(dirname)/1024
os.path.isfile(filename) # 判断是否为文件
os.stat(filename) # 查看文件属性
filename[-3:] # 找后缀名,不通用
os.path.splitext(filename) # 取后缀名
filename.endswith(‘.py‘) # 是否以.py结尾
示例代码2:
#!/usr/bin/python3
import os
import re
# 以正则表达式取后缀名
filename = r‘D:python est.py‘
os.chdir(‘D:/python‘)
re_filename = re.compile(‘(.*py$)‘)
name = re_filename.match(filename).group()
print(name)
# os.walk 遍历目录,找到对应.py的后缀名
for root, dirs, files in os.walk(r‘D:python‘):
for name in files:
file = os.path.join(root,name)
if re_filename.match(file):
print(name)
压缩备份文件
使用zipfile
- 创建压缩文件
- 查看信息
- 解压缩
示例代码:
#!/usr/bin/python3
import os
import zipfile
os.chdir(‘test‘)
my_zip = zipfile.ZipFile(‘bak.zip‘, ‘w‘) # 创建一个bak.zip
my_zip.write(‘ss.txt‘, compress_type=zipfile.ZIP_DEFLATED) # 向bak.zip中添加文件
my_zip.write(‘ss2.txt‘, compress_type=zipfile.ZIP_DEFLATED) # 添加文件
my_zip.close() # 关闭bak.zip文件
# 查看
aa = zipfile.ZipFile(‘bak.zip‘)
aa.namelist() #查看压缩文件中的内容
aa.getinfo(‘ss.txt‘) # 查看压缩文件中内容的属性
aa.close()
# 解压缩
xx = zipfile.ZipFile(‘bak1.zip‘)
xx.extractall(‘../test1‘) # 解压到上一级目录
xx.close()
以上是关于python--目录操作的主要内容,如果未能解决你的问题,请参考以下文章