[PY3]——IO——文件目录操作
IO—os、shutil—文件目录操作
目录操作
1. 新建
os.mkdir(path[, mode]) |
相当于mkdir,新建目录 |
os.makedirs(path[, mode]) |
相当于mkdir -p |
os.path.exists("/test2") False # os.mkdir( ) 如果父路径不存在,则新建报错 os.mkdir('/test2/abc') FileNotFoundError: [Errno 2] No such file or directory: '/test2/abc'# os.makedirs( ) 会自动创建父目录,相当于mkdir -p os.makedirs('/test2/abc') print(os.path.exists('/test2/abc')) True
2. 删除
os.rmdir(path) |
删除空目录 |
shutil.rmtree(path) |
删除且可以递归删除 |
os.rmdir("/test2/abc") OSError: [Errno 39] Directory not empty: '/test2/abc'
3. 查看目录内容
os.listdir(path) |
列出目录下的内容,相当于ls |
# 列出目录内容但不递归子目录,返回列表 print(os.listdir("/test2/abc")) ['abc2', 'kong.txt']
4. 工作目录的查看和切换
os.getcwd() |
获取当前所在目录 相当于pwd |
os.chdir(path) |
进入指定路径目录 相当于cd |
print(os.getcwd()) /py3os.chdir('/test') print(os.getcwd()) /test
5. 重命名
os.rename(src, dst) |
移动/重命名,相当于mv |
print(os.listdir("/test2/aa")) ['aa.sh'] print(os.listdir("/test2/bb")) []os.rename("/test2/aa/aa.sh","/test2/bb/aa.sh.bak")print(os.listdir("/test2/aa")) [] print(os.listdir("/test2/bb")) ['aa.sh.bak']
6. 权限
os.chmod(path, mode) |
修改权限 |
os.chown(path, uid, gid) |
修改属主属组 |
shutil (path,user=None,group=None) |
修改属主属组 |
os.lchmod(path, mode) |
|
os.lchown(path, uid, gid) |
# os.chmodprint(oct(os.stat("/test2/").st_mode)[-4:]) 0755 os.chmod("/test2",0o644)print(oct(os.stat("/test2/").st_mode)[-4:]) 0644 # os.chown print(pwd.getpwuid(os.stat("/test2").st_uid).pw_name) root os.chown("/test2",uname_uid("user00"),gname_gid("user00"))print(pwd.getpwuid(os.stat("/test2").st_uid).pw_name) user00 print(grp.getgrgid(os.stat("/test2").st_gid).gr_name) user00 # shutil.chown(这种方法的uid、gid参数可以接受字符串,更方便!)print(pwd.getpwuid(os.stat("/test2/aa.txt").st_uid).pw_name)root
shutil.chown("/test2/aa.txt","user00","user00") print(pwd.getpwuid(os.stat("/test2/aa.txt").st_uid).pw_name)user00
7. 复制和移动
shutil.copytree | 复制整个目录树 |
shutil.move | 相当于windows下的Ctrl+X、Ctrl+V |
# shutil.move(src,dst,copy_function = copy2 ) print(os.path.exists("/test2/aa")) Trueprint(os.listdir("/test2/aa")) ['aa_aa', 'test.txt'] shutil.move("/test2/aa","/test2/bb")print(os.path.exists("/test2/aa")) Falseprint(os.path.exists("/test2/bb")) True print(os.listdir("/test2/bb")) ['aa_aa', 'test.txt']# shutil.copytree(src,dst,symlinks = False,ignore = None,copy_function = copy2,ignore_dangling_symlinks = False ) print(os.path.exists("/test2/bb")) Trueprint(os.listdir("/test2/bb")) ['aa_aa', 'test.txt'] shutil.copytree("/test2/bb","/test/bb",ignore=ignore_patterns("*.txt"))print(os.path.exists("/test/bb")) Trueprint(os.listdir("/test/bb")) ['aa_aa']
8. 获取目录信息
os.stat(path) |
获取目录信息 相当于stat |
os.statvfs(path) |
获取指定路径的文件系统统计信息 |
os.path.getatime(path) |
|
os.path.getmtim(path) |
|
os.path.getctime(path) |
|
os.path.getsize(path) |
# os.stat输出的信息和stat命令一致 print(os.stat("/test2")) os.stat_result(st_mode=16804, st_ino=296353, st_dev=2053, st_nlink=4, st_uid=500, st_gid=500, st_size=4096, st_atime=1503497751, st_mtime=1503497749, st_ctime=1503497749)os.system("stat /test2") File: `/test2'Size: 4096 Blocks: 8 IO Block: 4096 directoryDevice: 805h/2053d Inode: 296353 Links: 4Access: (0644/drw-r--r--) Uid: ( 500/ user00) Gid: ( 500/ user00)Access: 2017-08-23 10:15:51.125760987 -0400Modify: 2017-08-23 10:15:49.496761986 -0400Change: 2017-08-23 10:15:49.496761986 -0400# os.stat中输出的每一条信息都可以通过 . 的方式单独获取 print(os.stat("/test2").st_dev) 2053# 获取ctime、atime、mtime时间(os.stat的输出是时间戳的形式所以用datetime) print(datetime.fromtimestamp(os.stat("/test2/").st_ctime)) 2017-08-22 14:51:07.943986# 获取uid、gid(os.stat的输出是gid和uid可以利用pwd和grp转换为更易读的username和groupname) print(pwd.getpwuid(os.stat("/test2").st_uid).pw_name) user00 print(grp.getgrgid(os.stat("/test2").st_gid).gr_name) user00print(os.statvfs("/test2")) os.statvfs_result(f_bsize=4096, f_frsize=4096, f_blocks=2396548, f_bfree=1024591, f_bavail=902851, f_files=609600, f_ffree=384157, f_favail=384157, f_flag=4096, f_namemax=255)f_bsize: 文件系统块大小 f_frsize: 分栈大小 f_blocks: 文件系统数据块总数 f_bfree: 可用块数 f_bavail:非超级用户可获取的块数 f_files: 文件结点总数 f_ffree: 可用文件结点数 f_favail: 非超级用户的可用文件结点数 f_fsid: 文件系统标识 ID f_flag: 挂载标记 f_namemax: 最大文件长度
9. 修改
os.utime(path, times) |
修改文件的访问和修改的时间 |
文件操作
1. 新建
f=open("/test2/newfile.txt",mode="w+")
2. 读写
(参考《[PY3]——IO——文件读写》)
3. 删除
os.remove(path) | 删除文件 |
print(os.path.exists("/test2/newfile.txt")) True os.remove("/test2/newfile.txt")print(os.path.exists("/test2/newfile.txt")) False
4. 重命名
同目录操作
5. 权限
同目录操作
6. 移动
shutil.copyfile | 复制内容,属主属组不复制 |
shutil.copymode | 复制权限 |
shutil.copystat | 复制元数据 |
shutil.copy | 复制内容和权限,相当于copyfile+copymode |
shutil.copy2 | 复制内容和元数据,相当于copyfile+copystat |
7. 获取文件信息
同目录操作
其他操作
1. 判断
os.path.exists(path) | 判断该路径是否存在 |
os.path.isfile(path) | 判断是否是文件 |
os.path.isdir(path) | 判断是否是目录 |
os.path.ismount(path) | 判断是否是挂载点 |
os.path.islink(path) | 判断是否是软链接 |
os.path.isabs(path) | 判断是否是绝对路径 |
2. 路径获取
os.path.basename(path) | |
os.path.dirname(path) | |
os.path.relpath(path) | |
os.path.split(path) | 将path分割成目录和文件名的二元组返回 |
3. 软/硬链接
os.link(src,dst) | |
os.symlink(src,dst) | |
os.readlink(path) |
参考资料
《shutil模块介绍》
《os.path官方文档》
《shutil官方文档》
《python3-os方法总结》
转载于:https://www.cnblogs.com/snsdzjlz320/p/7410955.html
[PY3]——IO——文件目录操作相关推荐
- 零基础学Python(第十八章 文件IO流操作)
本套学习内容共计[22]个章节,每个章节都会有对应的从0-1的学习过程详细讲解,希望可以给更多的人提供帮助. 开发环境:[Win10] 开发工具:[Visual Studio 2019] 本章内容为: ...
- paip.文件目录操作uAPI php python java对照
paip.文件目录操作uAPI php python java对照 chdir -- 改变目录 chroot -- 改变根目录 dir -- directory 类 closedir -- 关闭目录句 ...
- 你一定要知道的关于Linux文件目录操作的12个常用命令
博客园 首页 新随笔 联系 管理 订阅 随笔- 26 文章- 1 评论- 18 你一定要知道的关于Linux文件目录操作的12个常用命令 转自:http://www.cnblogs.com/yo ...
- java io文件操作_java IO 文件操作方法总结
java IO 文件操作方法总结 对于输入输出的理解: 输入输出,以程序为参考点,外部数据进入程序,通过输入流完成.程序将数据给外部设备,通过输出流完成. 文件Io的操作 //获取文件 File fi ...
- 【语法】NSFileManager 文件目录操作
1.文件目录操作 // 1.创建文件操作对象fm,并打印出当前目录NSFileManager *fm=[NSFileManager defaultManager];// 获取当前目录NSLog(@&q ...
- php文件目录教程,php文件目录操作的开发过程与示例分享
我们经常遇到生成文件目录,文件(夹)编辑等操作,今天就给大家介绍一个php中文件目录操作类,可以建立目录,删除目录,建立文件,删除文件,移动文件夹,复制文件夹等一系列你能操作操作的功能. 首先下载我们 ...
- Linux下C编程-----IO/文件操作 模拟linux ls程序显示文件系统树形结构(2)
Linux下的IO/文件操作练习,知识虽然简单 但是往往基础容易被忽略,偶尔的练习是有必要的. 练习printf /****************************************** ...
- java删除相对路径文件夹_Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录...
Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录 这里先简单的贴下常用的方法: File.separator //当前系统文件分隔符 File.pathSeparator// F ...
- Poco库使用:文件目录操作
文章目录 获取各种标准目录 获取和应用相关的信息 目录操作 文件操作 在工程项目开发中,文件目录操作应该是最常见的操作之一了吧.这里就介绍一下如何通过Poco库实现各种文件目录操作. 获取各种标准目录 ...
最新文章
- PendingIntent详解
- 运行mysql数据库的命令_mysql 数据库常用命令
- Android:JAVA使用HDF5存储
- [HDU 6643] Ridiculous Netizens(点分治+根号分治+dp)
- PowerDesigner(三)-企业架构模型
- 20145313《信息安全系统设计基础》第7周学习总结
- 药库管理系统登录界面设计
- 关于UML 画图工具EA 在linux下的安装和界面配置
- IDEA更改maven镜像源
- Rocksdb 的compaction_filter和table_properties_collector 用法 及 其底层实现
- 阿里云通过镜像迁移系统后,项目报异常Unable to set localhost. This prevents creation of a GUID...
- SE壳C#程序-CrackMe-爆破 By:凉游浅笔深画眉 / Net7Cracker
- excel中VBA获取指定单元格内容
- maven 配置 (个人记录向)
- 反向数——两种形式的反向数
- 小米Android12,小米神速更新安卓12,三大亮点抢先看!
- 在培训机构学习java后端的感想
- 为什么健身房的教练都不提倡做仰卧起坐呢?
- 【好用的工具】Hue 图形化操作数仓工具
- Linux系统调用及示例
热门文章
- lamp里php 的升级,lamp架构之升级php版本
- layui结合form,table的全选、反选v1.0
- python运势预测程序_Python 爬虫系列之一——每日星座运势
- MySQL笔记-删除session,删除阻塞任务
- 信息安全工程师笔记-网络安全漏洞防护技术原理与应用
- Web安全笔记-Fidder与浏览器找关键Cookie(Cookie劫持前的准备)
- 5.4广义表的定义5.5广义表的存储结构
- 中标麒麟安装rpm包命令_在 Fedora 中安装替代版本的 RPM 包
- 2字节取值范围_Java注解-元数据、注解分类、内置注解和自定义注解|乐字节
- php 怎么使循环少一次,PHP-如何让一个类仅在循环中应用一次?