Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- # Time : 2018/11/17 13:54
- # Author : Jenson
- import os
- mydir = os.getcwd() #以字符串格式获取当前工作目录
- #如果我要在这个工作目录下写一个程序,产生、删除,copy一个文件,意思是以我目前的工作目录为基础
- print(mydir)
- os.chdir('C:/new pycharm project') #更改当前工作路径到'C:/new pycharm project'
- #代码中关于文件路径,一律'\'改为'/',只是为了区别于格式转换符
- print(os.getcwd()) #更改路径之后,打印检查一下更改之后的工作路径
- os.chdir('C:/Users/琳克队长/PycharmProjects/Advanced grammer') #现在又更改回到原来的工作路径
- print(os.getcwd())
- ld = os.listdir() #listdir()获取一个目录中所有子目录和文件名,返回一个list,子目录和文件名在一个该list中出现
- print(ld)
- '''rst = os.makedirs("Jenson03") #在当前工作目录下递归创建文件夹,这是在相对路径下创建文件夹
- print(rst)
- print("*"*150)
- rst1 = os.system("ls") #运行系统shell命令,运行结果是打开一个shell或者终端界面
- #ls这个shell命令代表列出当前文件和文件夹的命令
- print(rst1)
- rst2 = os.system("I'm Jenson.jenson") #在当前目录下创建一个I'm Jenson.jenson的文件(注意创建的是文件)
- print(rst2)'''
- rst3 = os.system("PATH") #获取指定的系统环境变量值,返回的是指定的环境变量名对应的值
- print(rst3)
- '''
- os.curdir:current dir 当前目录
- os.pardir:parent dir 父目录
- os.sep 当前系统的路径分隔符 windows:"\" unix,linux,macos:"/"
- os.linesep 当前系统的换行符 windows:"\r\n" unix,linux,macos:"\n"
- 写代码遇到写分隔符、换行符时不要手动写,手动写会导致程序不具有一致性,应该用到os.path模块来写
- os.name 当前系统名称 windows:"nt" unix,linux,mac:"posix"
- '''
- #os.path模块
- import os.path as op
- absp = op.abspath(".")
- print(absp) #abspath()表示将路径转换为绝对路径
- #格式:os.path.abspath('具体路劲')
- #返回值:路径的绝对路径形式
- #在Linux中 . 点号,代表当前目录 .. 双点代表父目录
- bn = op.basename("C:/Users/琳克队长/PycharmProjects/Advanced grammer")
- bnn = op.basename("C:/Users/琳克队长/PycharmProjects/Advanced grammer/测试03/Jenson01.docx")
- print(bn) #basename()表示获取路径中最后一个分隔符("\")之后的部分
- print(bnn) #格式 os.path.basename(路径)
- #返回值:最后一个文件夹的名字(或者文件的名字)对应的字符串
- print("*"*100)
- bn1 = "C:/Users/琳克队长/PycharmProjects/Advanced grammer/测试01"
- fn = "Jenson01.docx"
- bn0 = op.join(bn1, fn)
- print(bn0) #地址拼接,将多个路径合并为一个路径,不能用手写,得用join来拼接,因为手写的不具有移植性
- #格式:os.path.join(路径1,路径2,路径3...)
- #返回值:组合之后的新路径字符串,实际路径中并未发生变化
- t= op.split("C:/Users/琳克队长/PycharmProjects/Advanced grammer/测试03/Jenson01.docx")
- print(t) #将split()将路径切割为文件夹部分和当前文件部分
- #os.path.split(路径)
- #返回值:路径和文件名组成的元组
- d,p = op.split("C:/Users/琳克队长/PycharmProjects/Advanced grammer/测试03/Jenson01.docx")
- print(d,p) #老规矩,遇到元组可以用多个值去接收
- result1 = op.isdir("C:/Users/琳克队长/PycharmProjects/Advanced grammer/测试03")
- result2 = op.isdir("C:/Users/琳克队长/PycharmProjects/Advanced grammer/测试03/Jenson01.docx")
- print(result1, result2) #检测是否为路径,第一个为目录,返回Ture;第二个为文件,返回Fault
- #格式:os.path.isdir(路径)
- #返回值:is类型,一律返回布尔值
- a = op.exists("C:/Users/琳克队长/PycharmProjects/Advanced grammer/测试03")
- b = op.exists("C:/Users/琳克队长/PycharmProjects/Advanced grammer/测试03/Jenson01.docx")
- print(a, b) #判断目录或者文件是否存在
- #格式:os.path.exists(路径)
- #返回值:布尔值
- #os.shutil模块
- import shutil
- cp1 = shutil.copy("C:/Users/琳克队长/PycharmProjects/Advanced grammer/测试05/Jenson.docx",
- "C:/Users/琳克队长/PycharmProjects/Advanced grammer/测试06/Annie.docx")
- print(cp1) #用的较多 copy()表示复制文件(将原路径的内容覆盖至新的路径)
- #格式:shutil.copy(来源路径,目标路径)
- #返回值:返回目标路径
- #拷贝的同时,可以给目标路径的文件重新命名
- #后一个文件名不加后缀.docx,则文件也能复制过去,但是从递归文件夹进去的时候,文件没有icon图标
- cp2 =shutil.copyfile("C:/Users/琳克队长/PycharmProjects/Advanced grammer/测试07/Jenson.docx",
- "C:/Users/琳克队长/PycharmProjects/Advanced grammer/测试08/Annie.docx")
- print(cp2) #较少用 copyfile()将一个文件中的内容复制到另外一个文件当中(将源路径的内容复制到新路径)
- #格式:shutil.copy(源路径,目标路径)
- #无返回值
- '''cp3 = shutil.move("C:/Users/琳克队长/PycharmProjects/Advanced grammer/测试09/Jenson.docx",
- "C:/Users/琳克队长/PycharmProjects/Advanced grammer/测试10")
- print(cp3)''' #移动文件/文件夹到新的路径
- #格式:shutil move(源路径,目标路径)
- #返回值:目标路径
- cp4 = shutil.make_archive("C:/Users\琳克队长\测试-source\Saved Pictures", "zip", "C:/Users\琳克队长\测试-source")
- print(cp4) #注意前后路径,不能超过User的范围,不然显示权限类型的报错
- #make_archieve()表示归档操作
- #格式:shutil.make_archieve(归档之后的目录和文件名,后缀,需要归档的文件夹)
- #返回归档之后的地址
- #unpack_achive()解包操作
- #shutil.unpack_achive("归档文件地址","解压之后的地址")
- #返回解压之后的地址
Add Comment
Please, Sign In to add comment