#第n讲 文件管理
'''
文件管理的功能命令基于linux 的文件管理功能
ls  rename
不得不说,linux 的基础命令真的很通用

linux 基础命令
.   指向当前目录
..  指向父目录

文件附加信息
文件类型 文件尺寸 文件权限 文件修改时间 文件读取时间
ls -l file.txt
-rw-rw-r-- 1 liyihao liyihao 585 10月 24 20:42 key

第一个 -  表示文件类型   说明key 是常规文件,目录显示d

rw-rw-r-- 表示文件权限   rw- rw- r-- 分别对应拥有者owner 拥有组owner group 其他人other
linux 登录,我会有一个用户身份   一个组身份  相当于名片
rw- 表示我是改文件的拥有者,对此文件具有  读取r 写入w 权限,没有执行权限,拥有执行权限- 应该为x
第二个rw- 表示如果我的名片组身份证明我是这个组的,那么我有读写 的权限
第三个 如果我不是拥有者 也不是组,那么我只有读的权限

1 代表的硬连接 hard link 数目  link count
liyihao 表示liyihao是文件的拥有者,拥有者有权更新文件权限,rwxrwxrwx

585 表示文件大小,单位字节

10月24 20:42 表示上一次写入时间
后面是文件名称
'''


#os包
#mkdir(path)
#os.mkdir(path[, mode])
#path 为目录,mode为目录设置的权限数字

import os
path = 'D:\\download\\new4'
os.mkdir(path)
print (r'目录已创建', path)

#已经创建了

import time
time.sleep(5)
os.rmdir(path)
print (r'目录已移除')
#这个看不明显,最好跟下一个一起看。先创建,然后再显示所有的目录,然后再移除目录,然后再刷新显示所有的目录

import os
path = 'D:\\test\\test'
os.mkdir(path)
print (r'目录已创建', path)  #创建目录

path2 = 'D:\\test'
files = os.listdir(path2)
print (files)   #显示这个目录下所有文件,包括了我们新建的文件夹

os.rmdir(path)  #移除创建的test目录
file2 = os.listdir(path2)
print (file2) #显示目录下所有文件

#如果执行速度快,可以增加time包的延迟时间,来看到PC的处理过程
#输出 ['button.py', 'monkeytest.log', 'monkeytest2.log', 'monkeytest3.log', 'monkeytest4.log', 'test', 'UCliulanqi_707.apk', 'yizuanbao2.apk', 'yizuanbao_PRO_1.0_980.apk', 'yizuanbao_yz360.apk']
#     ['button.py', 'monkeytest.log', 'monkeytest2.log', 'monkeytest3.log', 'monkeytest4.log', 'UCliulanqi_707.apk', 'yizuanbao2.apk', 'yizuanbao_PRO_1.0_980.apk', 'yizuanbao_yz360.apk']
#能看到少了test 的目录

#os.rmdir 是删除空的目录,否则报错OSERROR

#os.remove(path)
#删除指定目录文件
#在test 新建txt文件,显示所有文件,移除txt文件,再次显示所有文件

import os,time
txt1 = open('D:\\test\\1.txt', 'w')
print (txt1.name)
txt1.close()
files = os.listdir('D:\\test')
print (files)

time.sleep(5)
os.remove('D:\\test\\1.txt')
file2 = os.listdir('D:\\test')
print (file2)

'''
['1.txt', 'button.py', 'monkeytest.log', 'monkeytest2.log', 'monkeytest3.log', 'monkeytest4.log', 'UCliulanqi_707.apk', 'yizuanbao2.apk', 'yizuanbao_PRO_1.0_980.apk', 'yizuanbao_yz360.apk']
['button.py', 'monkeytest.log', 'monkeytest2.log', 'monkeytest3.log', 'monkeytest4.log', 'UCliulanqi_707.apk', 'yizuanbao2.apk', 'yizuanbao_PRO_1.0_980.apk', 'yizuanbao_yz360.apk']
'''



#rename文件
file = open('D:\\test\\1.txt', 'w')
file.close()
time.sleep(5)
os.rename('D:\\test\\1.txt', 'D:\\test\\2.txt')
files = os.listdir('D:\\test')
print (files)
os.remove('D:\\test\\2.txt')
file2 = os.listdir('D:\\test')
print (file2)

os.stat('D:\\test\\UCliulanqi_707.apk')
#输出 os.stat_result(st_mode=33206, st_ino=9007199254743530, st_dev=551390, st_nlink=1, st_uid=0, st_gid=0, st_size=34561962, st_atime=1510121999, st_mtime=1510122000, st_ctime=1510121999)
#查询文件信息,类似上上面的linux -l命令

#查询当前工作目录
os.getcwd()

#改变path文件权限
#os.chmod(path,mode)
#可以修改文件/目录 的权限
#mode 模式 参考资料 http://www.runoob.com/python/os-chmod.html

#改变文件拥有者 和拥有组  (只支持在 Unix 下使用)
#os.chown(path, uid, gid)
#uid user id
#gid group id

#创建软链接
#os.symlink(src, dst)
#src 原地址
#dst 目标地址




'''
***************************************************分隔
shutil包
'''
import shutil
shutil.copy('D:\\test\\UCliulanqi_707.apk', 'D:\\apktool')
print ('copy success')


shutil.move('D:\\apktool\\UCliulanqi_707.apk', 'D:\\360Downloads')
print ('move success')

#copy move 两个命令