python3 os,sys,stat模块

import os
import sys,stat

# os.cpu_count() 返回硬件CPU核心数量
print(os.cpu_count())   #4 CPU核数量

# 返回当前目录
print(os.curdir)        #. 当前目录

# 返回当前父目录
print(os.pardir)        #..

# os.chdir() 方法用于改变当前工作目录到指定的路径。
# 语法 os.chdir(path)  path -- 要切换到的新路径。如果允许访问返回 True , 否则返回False。
print(os.getcwd())       #F:\project\python

# os.getcwdb() 查看当前工作目录 Unicode对象
print(os.getcwdb()) #b'F:\\project\\python'



# os.rename()
# os.renames()

# os.remove(path)
# os.rmdir(path) 方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。
# os.removedirs(path) 方法用于递归删除目录。像rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹,
#       直到抛出一个error(它基本上被忽略,因为它一般意味着你文件夹不为空)。
# os.remove(path) 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。

# os.rmdir(./testfiles)
# os.remove("1.txt")


if (not os.path.exists("./testfiles")):
    os.mkdir("./testfiles")
    pass

path = "F:\\project\\python\\testfiles"
os.chdir(path)
print(os.getcwd())  #F:\project\python\python3

# 列出指定目录下的文件 返回列表类型
print(os.listdir(os.getcwd()))



# os.access(path, mode);
# 参数
# path -- 要用来检测是否有访问权限的路径。
# mode -- mode为F_OK,测试存在的路径,或者它可以是包含R_OK, W_OK和X_OK或者R_OK, W_OK和X_OK其中之一或者更多。
# os.F_OK:  作为access()的mode参数,测试path是否存在。
# os.R_OK:  包含在access()的mode参数中,测试path是否可读。
# os.W_OK:  包含在access()的mode参数中,测试path是否可写。
# os.X_OK:  包含在access()的mode参数中,测试path是否可执行。

print("1.wav F_OK:%s" % os.access("1.wav", os.F_OK)) #1.wav F_OK:True
print("1.wav W_OK:%s" % os.access("1.wav", os.W_OK)) #1.wav W_OK:True
print("1.wav R_OK:%s" % os.access("1.wav", os.R_OK)) #1.wav R_OK:True
print("numpytest.py:%s" % os.access("numpytest.py X_OK", os.X_OK))   #numpytest.py:True


# stat()方法语法格式如下:
# os.stat(path)
# 参数
# path -- 指定路径
# 返回值
# stat 结构:
#           st_mode: inode 保护模式
#           st_ino: inode 节点号。
#           st_dev: inode 驻留的设备。
#           st_nlink: inode 的链接数。
#           st_uid: 所有者的用户ID。
#           st_gid: 所有者的组ID。
#           st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
#           st_atime: 上次访问的时间。
#           st_mtime: 最后一次修改的时间。
#           st_ctime: 由操作系统报告的"ctime"

st = os.stat("F:\\project\\python\\1.wav")
print(st)
#os.stat_result(st_mode=33206, st_ino=1970324837252461, st_dev=4131763501, st_nlink=1, st_uid=0, st_gid=0, 
# st_size=559324, st_atime=1610531923, st_mtime=1594304840, st_ctime=1609659610)

print("st_mode:", st.st_mode)   #st_mode: 33206
print("st_ino:", st.st_ino)     #st_ino: 1970324837252461
print("st_dev:", st.st_dev)     #st_dev: 4131763501
print("st_nlink:", st.st_nlink) #st_nlink: 1
print("st_uid:", st.st_uid)     #st_uid: 0
print("st_gid:", st.st_gid)     #st_gid: 0
print("st_size:", st.st_size)   #st_size: 559324
print("st_atime:", st.st_atime) #st_atime: 1610531923.9897208
print("st_mtime:", st.st_mtime) #st_mtime: 1594304840.1957505 
print("st_mtime_ns:", st.st_mtime_ns) #st_mtime_ns: 1594304840195750400
print("st_ctime:", st.st_ctime) #st_ctime: 1609659610.8919566


# os.utime(path, times) os.utime() 方法用于设置指定路径文件最后的修改和访问时间。
os.utime("F:\\project\\python\\1.wav", (1509659610, 1594304840))
st = os.stat("F:\\project\\python\\1.wav")
print(st)
# os.stat_result(st_mode=33206, st_ino=1970324837252461, st_dev=4131763501, st_nlink=1, st_uid=0, st_gid=0,
#  st_size=559324, st_atime=1610531923, st_mtime=1594304840, st_ctime=1609659610)



# os.open(file, flags[, mode]); 方法用于打开一个文件,并且设置需要的打开选项,模式参数mode参数是可选的,默认为 0777。
# 参数
# file -- 要打开的文件
# flags -- 该参数可以是以下选项,多个使用 "|" 隔开:
#       os.O_RDONLY: 以只读的方式打开
#       os.O_WRONLY: 以只写的方式打开
#       os.O_RDWR : 以读写的方式打开
#       os.O_NONBLOCK: 打开时不阻塞
#       os.O_APPEND: 以追加的方式打开
#       os.O_CREAT: 创建并打开一个新文件
#       os.O_TRUNC: 打开一个文件并截断它的长度为零(必须有写权限)
#       os.O_EXCL: 如果指定的文件存在,返回错误
#       os.O_SHLOCK: 自动获取共享锁
#       os.O_EXLOCK: 自动获取独立锁
#       os.O_DIRECT: 消除或减少缓存效果
#       os.O_FSYNC : 同步写入
#       os.O_NOFOLLOW: 不追踪软链接

# os.read(fd, n) 方法用于从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,
#               文件描述符 fd对应文件已达到结尾, 返回一个空字符串。

# os.write(fd, str) 方法用于写入字符串到文件描述符 fd 中. 返回实际写入的字符串长度。

# os.lseek(fd, pos, how) 方法用于设置文件描述符 fd 当前位置为 pos, how 方式修改。
# fd -- 文件描述符。
# pos -- 这是相对于给定的参数 how 在文件中的位置。。
# how -- 文件内参考位置。SEEK_SET 或者 0 设置从文件开始的计算的pos; SEEK_CUR或者 1 则从当前位置计算; os.SEEK_END或者2则从文件尾部开始。

# os.lstat(path) 方法用于类似 stat() 返回文件的信息,但是没有符号链接。在某些平台上,这是fstat的别名,例如 Windows。

# os.fsync()
# os.fstat(fd) 方法用于返回文件描述符fd的状态,类似 stat()。
# fd -- 文件的描述符。
# fstat 方法返回的结构:
#       st_dev: 设备信息
#       st_ino: 文件的i-node值
#       st_mode: 文件信息的掩码,包含了文件的权限信息,文件的类型信息(是普通文件还是管道文件,或者是其他的文件类型)
#       st_nlink: 硬连接数
#       st_uid: 用户ID
#       st_gid: 用户组 ID
#       st_rdev: 设备 ID (如果指定文件)
#       st_size: 文件大小,以byte为单位
#       st_blksize: 系统 I/O 块大小
#       st_blocks: 文件的是由多少个 512 byte 的块构成的
#       st_atime: 文件最近的访问时间
#       st_mtime: 文件最近的修改时间
#       st_ctime: 文件状态信息的修改时间(不是文件内容的修改时间)

# os.close(fd) 关闭文件
st = os.lstat("1.wav")
print(st)


f1 = os.open("1.wav", os.O_RDONLY | os.O_CREAT)
f1_st = os.fstat(f1)
os.close(f1)
print(f1_st)


if (os.path.exists("2.txt")):
    # os.chmod("2.txt")
    # os.remove("2.txt")
    pass

f1 = os.open("2.txt", os.O_RDWR | os.O_CREAT)
os.write(f1, bytes("hello world", 'UTF-8'))
os.write(f1, str.encode("world hello", 'UTF-8'))
os.fsync(f1)
os.lseek(f1, 0, os.SEEK_SET)
rd = os.read(f1, 16)
print(rd)
os.close(f1)


# os.chflags() 方法用于设置路径的标记为数字标记。多个标记可以使用 OR 来组合起来。只支持在 Unix 下使用。
# 需要导入stat模块 import stat
# os.chflags(path, flags)
# path  -- 文件名路径或目录路径。
# flags -- 可以是以下值:
#           stat.UF_NODUMP: 非转储文件
#           stat.UF_IMMUTABLE: 文件是只读的
#           stat.UF_APPEND: 文件只能追加内容
#           stat.UF_NOUNLINK: 文件不可删除
#           stat.UF_OPAQUE: 目录不透明,需要通过联合堆栈查看
#           stat.SF_ARCHIVED: 可存档文件(超级用户可设)
#           stat.SF_IMMUTABLE: 文件是只读的(超级用户可设)
#           stat.SF_APPEND: 文件只能追加内容(超级用户可设)
#           stat.SF_NOUNLINK: 文件不可删除(超级用户可设)
#           stat.SF_SNAPSHOT: 快照文件(超级用户可设)

# path = "/python3/os.py"
# flags = stat.SF_NOUNLINK or stat.SF_APPEND
# ret = os.chflags(path, flags)


# os.chmod() 方法用于更改文件或目录的权限。
# Unix 系统可用。
# 语法
# chmod()方法语法格式如下:os.chmod(path, mode)
# 参数
# path -- 文件名路径或目录路径。
# flags -- 可用以下选项按位或操作生成,目录的读权限表示可以获取目录里文件名列表,
#       执行权限表示可以把工作目录切换到此目录 ,删除添加目录里的文件必须同时有写和执行权限 ,
#       文件权限以用户id->组id->其它顺序检验,最先匹配的允许或禁止权限被应用。
#     stat.S_IXOTH: 其他用户有执行权0o001
#     stat.S_IWOTH: 其他用户有写权限0o002
#     stat.S_IROTH: 其他用户有读权限0o004
#     stat.S_IRWXO: 其他用户有全部权限(权限掩码)0o007
#     stat.S_IXGRP: 组用户有执行权限0o010
#     stat.S_IWGRP: 组用户有写权限0o020
#     stat.S_IRGRP: 组用户有读权限0o040
#     stat.S_IRWXG: 组用户有全部权限(权限掩码)0o070
#     stat.S_IXUSR: 拥有者具有执行权限0o100
#     stat.S_IWUSR: 拥有者具有写权限0o200
#     stat.S_IRUSR: 拥有者具有读权限0o400
#     stat.S_IRWXU: 拥有者有全部权限(权限掩码)0o700
#     stat.S_ISVTX: 目录里文件目录只有拥有者才可删除更改0o1000
#     stat.S_ISGID: 执行此文件其进程有效组为文件所在组0o2000
#     stat.S_ISUID: 执行此文件其进程有效用户为文件所有者0o4000
#     stat.S_IREAD: windows下设为只读
#     stat.S_IWRITE: windows下取消只读

# os.chmod("python3/os.py", stat.S_IXGRP)


# os.chown() 方法用于更改文件所有者,如果不修改可以设置为 -1, 你需要超级用户权限来执行权限修改操作。
# 只支持在 Unix 下使用。
# 语法
# chown()方法语法格式如下: os.chown(path, uid, gid);
# 参数
# path -- 设置权限的文件路径
# uid -- 所属用户 ID
# gid -- 所属用户组 ID





# os.path 模块主要用于获取文件的属性。
# 以下是 os.path 模块的几种常用方法:
# 方法	                                说明
# os.path.abspath(path)	                返回绝对路径
# os.path.basename(path)	            返回文件名
# os.path.commonprefix(list)	        返回list(多个路径)中,所有path共有的最长的路径
# os.path.dirname(path)	                返回文件路径
# os.path.exists(path)	                路径存在则返回True,路径损坏返回False
# os.path.lexists	                    路径存在则返回True,路径损坏也返回True
# os.path.expanduser(path)	            把path中包含的"~"和"~user"转换成用户目录
# os.path.expandvars(path)	            根据环境变量的值替换path中包含的"$name"和"${name}"
# os.path.getatime(path)	            返回最近访问时间(浮点型秒数)
# os.path.getmtime(path)	            返回最近文件修改时间
# os.path.getctime(path)	            返回文件 path 创建时间
# os.path.getsize(path)	                返回文件大小,如果文件不存在就返回错误
# os.path.isabs(path)	                判断是否为绝对路径
# os.path.isfile(path)	                判断路径是否为文件
# os.path.isdir(path)	                判断路径是否为目录
# os.path.islink(path)	                判断路径是否为链接
# os.path.ismount(path)	                判断路径是否为挂载点
# os.path.join(path1[, path2[, ...]])	把目录和文件名合成一个路径
# os.path.normcase(path)	            转换path的大小写和斜杠
# os.path.normpath(path)	            规范path字符串形式
# os.path.realpath(path)	            返回path的真实路径
# os.path.relpath(path[, start])	    从start开始计算相对路径
# os.path.samefile(path1, path2)	    判断目录或文件是否相同
# os.path.sameopenfile(fp1, fp2)	    判断fp1和fp2是否指向同一文件
# os.path.samestat(stat1, stat2)	    判断stat tuple stat1和stat2是否指向同一个文件
# os.path.split(path)	                把路径分割成 dirname 和 basename,返回一个元组
# os.path.splitdrive(path)	            一般用在 windows 下,返回驱动器名和路径组成的元组
# os.path.splitext(path)	            分割路径中的文件名与拓展名
# os.path.splitunc(path)	            把路径分割为加载点与文件
# os.path.walk(path, visit, arg)	    遍历path,进入每个目录都调用visit函数,visit函数必须有3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有文件名,args则为walk的第三个参数
# os.path.supports_unicode_filenames	设置是否支持unicode路径名

if os.path.exists("demofile.txt"):
    os.remove("demofile.txt")
else:
    print("The file does not exist.")

print(os.path.isdir("demofile.txt"))




# os.abort()
# os.access()
# os.add_dll_directory()
# os.chdir()
# os.curdir()
# os.chmod()

# os.defpath()
# os.device_encoding()

# os.dup()
# os.dup2()

# os.execl()
# os.execle()
# os.execlp()
# os.execlpe()
# os.execv()
# os.execve()
# os.execvp()
# os.execvpe()

# os.link()
# os.unlink()

# os.fdopen()
# os.fsdecode()
# os.fsencode()
# os.fspath()
# os.fstat()
# os.fsync()
# os.closerange()

# os.get_exec_path()
# os.get_inheritable()
# os.get_terminal_size()
# os.getenv()
# os.getlogin()
# os.getpid()
# os.getppid()

# os.kill()
# os.linesep()
# os.listdir()
# os.makedirs()
# os.mkdir()
# os.name()
# os.pardir()
# os.path()
# os.path
# os.pathsep()
# os.pipe()
# os.popen()
# os.putenv()
# os.read()
# os.readlink()
# os.remove()
# os.removedirs()
# os.rename()
# os.renames()
# os.replace()
# os.scandir()
# os.sep()
# os.set_inheritable()
# os.spawnl()
# os.spawnv()
# os.spawnle()
# os.spawnve()
# os.startfile()
# os.stat_result()
# os.stat()
# os.terminal_size()
# os.times()
# os.truncate()
# os.umask()
# os.unlink()
# os.urandom()

# os.waitpid()
# os.walk()




猜你喜欢

转载自blog.csdn.net/u013420428/article/details/112602017