python 4-2-1 os 模块 os.listdir()/os.stat()/stat.S_IXUSR/stat.S_IXGRP/stat.S_IXOTH

时间:2022-12-13 22:35:10

python 4-2-1 os 模块 os.listdir()/os.stat()/stat.S_IXUSR/stat.S_IXGRP/stat.S_IXOTH

列出当前目录的所有文件包括目录

os.mknod("test2.txt")  创建文件

os.listdir(".")

['1.py', '2.py', '3.py', '1.sh', '2.sh', 'testDir', 'test.txt', 'test2.txt']

列出文件属性


 os.stat("1.py")
posix.stat_result(st_mode=33204, st_ino=12591688L, st_dev=51L, st_nlink=1, st_uid=13350, st_gid=25, st_size=0L, st_atime=1484961785, st_mtime=1484961785, st_ctime=1484961785)

文件权限十进制转换成八进制后,就回到了我们熟悉的777属性了
oct(os.stat("1.py").st_mode)
'0100664'

通过st_mode 和 stat的常量值做或运算就可以得到目标文件权限
stat.S_IXUSR 就代表用户需要有可执行权限
>>> dir(stat)
['SF_APPEND', 'SF_ARCHIVED', 'SF_IMMUTABLE', 'SF_NOUNLINK', 'SF_SNAPSHOT', 'ST_ATIME', 'ST_CTIME', 'ST_DEV', 'ST_GID', 'ST_INO', 'ST_MODE', 'ST_MTIME', 'ST_NLINK', 'ST_SIZE', 'ST_UID', 'S_ENFMT', 'S_IEXEC', 'S_IFBLK', 'S_IFCHR', 'S_IFDIR', 'S_IFIFO', 'S_IFLNK', 'S_IFMT', 'S_IFREG', 'S_IFSOCK', 'S_IMODE', 'S_IREAD', 'S_IRGRP', 'S_IROTH', 'S_IRUSR', 'S_IRWXG', 'S_IRWXO', 'S_IRWXU', 'S_ISBLK', 'S_ISCHR', 'S_ISDIR', 'S_ISFIFO', 'S_ISGID', 'S_ISLNK', 'S_ISREG', 'S_ISSOCK', 'S_ISUID', 'S_ISVTX', 'S_IWGRP', 'S_IWOTH', 'S_IWRITE', 'S_IWUSR', 'S_IXGRP', 'S_IXOTH', 'S_IXUSR', 'UF_APPEND', 'UF_COMPRESSED', 'UF_HIDDEN', 'UF_IMMUTABLE', 'UF_NODUMP', 'UF_NOUNLINK', 'UF_OPAQUE', '__builtins__', '__doc__', '__file__', '__name__', '__package__']

修改文件权限

os.chmod(filename, os.stat(filename).st_mode | stat.S_IXUSR | stat.S_IXGRP |stat.S_IXOTH)

判断文件是否存在,如果不存在就创建

 if not os.path.isfile("test5.sh") :
     os.mknod("test5.sh")

判断文件夹是否存在,如果不存在就创建

if not os.path.isdir("test9") :
     os.makedirs("test9/test8")

os.path.isdir("test9/test8")
True