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——文件目录操作相关推荐

  1. 零基础学Python(第十八章 文件IO流操作)

    本套学习内容共计[22]个章节,每个章节都会有对应的从0-1的学习过程详细讲解,希望可以给更多的人提供帮助. 开发环境:[Win10] 开发工具:[Visual Studio 2019] 本章内容为: ...

  2. paip.文件目录操作uAPI php python java对照

    paip.文件目录操作uAPI php python java对照 chdir -- 改变目录 chroot -- 改变根目录 dir -- directory 类 closedir -- 关闭目录句 ...

  3. 你一定要知道的关于Linux文件目录操作的12个常用命令

    博客园 首页 新随笔 联系 管理 订阅 随笔- 26  文章- 1  评论- 18  你一定要知道的关于Linux文件目录操作的12个常用命令 转自:http://www.cnblogs.com/yo ...

  4. java io文件操作_java IO 文件操作方法总结

    java IO 文件操作方法总结 对于输入输出的理解: 输入输出,以程序为参考点,外部数据进入程序,通过输入流完成.程序将数据给外部设备,通过输出流完成. 文件Io的操作 //获取文件 File fi ...

  5. 【语法】NSFileManager 文件目录操作

    1.文件目录操作 // 1.创建文件操作对象fm,并打印出当前目录NSFileManager *fm=[NSFileManager defaultManager];// 获取当前目录NSLog(@&q ...

  6. php文件目录教程,php文件目录操作的开发过程与示例分享

    我们经常遇到生成文件目录,文件(夹)编辑等操作,今天就给大家介绍一个php中文件目录操作类,可以建立目录,删除目录,建立文件,删除文件,移动文件夹,复制文件夹等一系列你能操作操作的功能. 首先下载我们 ...

  7. Linux下C编程-----IO/文件操作 模拟linux ls程序显示文件系统树形结构(2)

    Linux下的IO/文件操作练习,知识虽然简单 但是往往基础容易被忽略,偶尔的练习是有必要的. 练习printf /****************************************** ...

  8. java删除相对路径文件夹_Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录...

    Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录 这里先简单的贴下常用的方法: File.separator //当前系统文件分隔符 File.pathSeparator// F ...

  9. Poco库使用:文件目录操作

    文章目录 获取各种标准目录 获取和应用相关的信息 目录操作 文件操作 在工程项目开发中,文件目录操作应该是最常见的操作之一了吧.这里就介绍一下如何通过Poco库实现各种文件目录操作. 获取各种标准目录 ...

最新文章

  1. PendingIntent详解
  2. 运行mysql数据库的命令_mysql 数据库常用命令
  3. Android:JAVA使用HDF5存储
  4. [HDU 6643] Ridiculous Netizens(点分治+根号分治+dp)
  5. PowerDesigner(三)-企业架构模型
  6. 20145313《信息安全系统设计基础》第7周学习总结
  7. 药库管理系统登录界面设计
  8. 关于UML 画图工具EA 在linux下的安装和界面配置
  9. IDEA更改maven镜像源
  10. Rocksdb 的compaction_filter和table_properties_collector 用法 及 其底层实现
  11. 阿里云通过镜像迁移系统后,项目报异常Unable to set localhost. This prevents creation of a GUID...
  12. SE壳C#程序-CrackMe-爆破 By:凉游浅笔深画眉 / Net7Cracker
  13. excel中VBA获取指定单元格内容
  14. maven 配置 (个人记录向)
  15. 反向数——两种形式的反向数
  16. 小米Android12,小米神速更新安卓12,三大亮点抢先看!
  17. 在培训机构学习java后端的感想
  18. 为什么健身房的教练都不提倡做仰卧起坐呢?
  19. 【好用的工具】Hue 图形化操作数仓工具
  20. Linux系统调用及示例

热门文章

  1. lamp里php 的升级,lamp架构之升级php版本
  2. layui结合form,table的全选、反选v1.0
  3. python运势预测程序_Python 爬虫系列之一——每日星座运势
  4. MySQL笔记-删除session,删除阻塞任务
  5. 信息安全工程师笔记-网络安全漏洞防护技术原理与应用
  6. Web安全笔记-Fidder与浏览器找关键Cookie(Cookie劫持前的准备)
  7. 5.4广义表的定义5.5广义表的存储结构
  8. 中标麒麟安装rpm包命令_在 Fedora 中安装替代版本的 RPM 包
  9. 2字节取值范围_Java注解-元数据、注解分类、内置注解和自定义注解|乐字节
  10. php 怎么使循环少一次,PHP-如何让一个类仅在循环中应用一次?