[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())
/py3

os.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"))
True

print(os.listdir("/test2/aa"))
[‘aa_aa‘, ‘test.txt‘]

shutil.move("/test2/aa","/test2/bb")

print(os.path.exists("/test2/aa"))
False

print(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"))
True

print(os.listdir("/test2/bb"))
[‘aa_aa‘, ‘test.txt‘]

shutil.copytree("/test2/bb","/test/bb",ignore=ignore_patterns("*.txt"))

print(os.path.exists("/test/bb"))
True

print(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   directory
 Device: 805h/2053d    Inode: 296353      Links: 4
 Access: (0644/drw-r--r--)  Uid: (  500/  user00)   Gid: (  500/  user00)
 Access: 2017-08-23 10:15:51.125760987 -0400
 Modify: 2017-08-23 10:15:49.496761986 -0400
 Change: 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)
user00

print(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. 获取后缀名

8. 获取文件信息

同目录操作

其他操作

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方法总结》

时间: 2024-10-10 10:20:09

[PY3]——IO——文件目录操作的相关文章

python2.7.13标准库文件目录操作与文件操作

标准库的中文参考文档: http://python.usyiyi.cn/translate/python_278/library/index.html 官方标准库文档:https://docs.python.org/2/ 该文参考的链接:http://www.cnblogs.com/zhangfei/archive/2013/06/02/3114354.html http://blog.csdn.net/chun_1959/article/details/45071861 http://www.

linux文件目录操作的相关命令

linux文件目录操作的相关命令 mkdir rmdir tree touch stat cp mv rm mkdir 功能说明:建立空目录 语 法:mkdir [-p][--help][--v][-m <目录属性>][目录名称] 补充说明:mkdir可建立目录并同时设置目录的权限. 选项: -m<目录属性> 建立目录时同时设置目录的权限. [[email protected]_18_121_centos ~]# mkdir -m 775 qin [[email protected

php 文件夹 与 文件目录操作

php文件夹操作函数 string basename ( string path [, string suffix] )给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名.如果文件名是以 suffix 结束的,那这一部分也会被去掉.在 Windows 中,斜线(/)和反斜线()都可以用作目录分隔符.在其它环境下是斜线(/). string dirname ( string path ) 给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名.在 Windows

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

Linux下的IO/文件操作练习,知识虽然简单 但是往往基础容易被忽略,偶尔的练习是有必要的. 练习printf /************************************************************************* > File Name: printf.c > Author: > Mail: > Created Time: Wed 11 Feb 2015 01:08:15 AM PST ***********************

IO文本操作

创建文件并写入内容 StreamWriter sw = new StreamWriter(url, “false 覆盖,true 追加”, Encoding.UTF8); sw.Write(“内容”); sw.Close(); 读取文件内容 FileInfo info = new FileInfo("路径"); FileStream fs = new FileStream(pash, FileMode.OpenOrCreate, FileAccess.Read); byte[] b =

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

写在前面: 1,<你一定要知道的关于Linux文件目录操作的12个常用命令>是楼主收集的关于Linux文件目录操作最常用的命令,包括文件或目录的新建.拷贝.移动.删除.查看等,是开发人员操作Linux系统的常用命令,所以你一定要知道. 2,<你一定要知道的关于Linux文件目录操作的12个常用命令>适合初学者,对于Linux大神的请绕过,不过欢迎一起讨论学习! 3,此次收集,多谢来自http://www.cnblogs.com/peida/archive/2012/10/23/27

IO流操作

一.IO流 1.  IO流是用来处理设备之间的数据传输,java是通过流的方式完成对数据的传输. 2.  操作的基本规律 1>明确源和目的. 2>操作的数据是否是纯文本. 3>当体系明确后,明确要使用哪个具体的对象. 二.IO流结构 IO流 |---字节流 |--输入流抽象基类:InputStream |--输出流抽象基类:Outputtream |---字符流 |--输入流抽象基类:Reader |--输出流抽象基类:Writer 注:由这四个类派生出来的子类名称都是以其父类名作为子类

EasyARM i.mx28学习笔记——文件IO方式操作GPIO

0 前言 本文描述如果通过文件IO sysfs方式控制EasyARM GPIO端口.通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction和value等,direction控制GPIO方向,而value可控制GPIO输出或获得GPIO输入. Linux学习可从应用出发,先不纠结Linux驱动编写,先把Linux给玩起来. [相关博文] [EasyARM

php文件目录操作

php文件目录操作 新建文件1.先确定要写入文件的内容content=′你好′;2.打开这个文件(系统会自动建立这个空文件)//假设新建的文件叫file.txt,而且在上级目录下.w表示'写文件′,content=′你好′;2.打开这个文件(系统会自动建立这个空文件)//假设新建的文件叫file.txt,而且在上级目录下.w表示'写文件′,fp下面要用到,表示指向某个打开的文件.fp=fopen(′../file.txt′,′w′);3.将内容字符串写入文件//fp=fopen(′../file