- 1. os模块
- 2. os_shutil
- 3. os_path
- 4. tarfile压缩模块
- 5. 小练习
# ### os 模块 import os #system() 在python中执行系统命令 os.system("ifconfig") # linux # os.system("ipconfig") windows # os.system("rm -rf ceshi.txt") #popen() 执行系统命令返回对象,通过read方法读出字符串 """ obj = os.popen("ipconfig") print(obj) print(obj.read()) """ #listdir() 获取指定文件夹中所有内容的名称列表 *** lst = os.listdir() print(lst) #getcwd() 获取当前文件所在的默认路径 *** """/mnt/hgfs/python32_gx/day16""" # 路径 res = os.getcwd() print(res) # 路径 + 文件名 *** print(__file__) #chdir() 修改当前文件工作的默认路径 os.chdir("/home/wangwen/mywork") os.system("touch 2.txt") #environ 获取或修改环境变量 """ [windows] (1)右键qq属性找路径 (2)右键我的电脑属性->高级系统设置->环境变量->path 打开环境变量添加对应路径 (3)cmd => QQScLauncher [linux] (1)在家目录中创建个文件夹,里面创建个文件wangwen,写入ifconfig (2)增加wangwen的可执行权限 chmod 777 wangwen 测试一下 sudo ./wangwen (3)添加环境变量在os.environ["PATH"] 中拼接wangwen所有的绝对路径 (4)os.system("wangwen") 总结: 环境变量path的好处是,让系统自动的找到该命令的实际路径进行执行; """ print(os.environ["PATH"]) """ environ( { 'PATH': '/home/wangwen/bin:/home/wangwen/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin', 'XAUTHORITY': '/home/wangwen/.Xauthority', 'XMODIFIERS': '@im=fcitx', 'XDG_DATA_DIRS': '/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'GDMSESSION': 'ubuntu', 'MANDATORY_PATH': '/usr/share/gconf/ubuntu.mandatory.path', 'GTK_IM_MODULE': 'fcitx', 'DBUS_SESSION_BUS_ADDRESS': 'unix:abstract=/tmp/dbus-5JjXbZOpKC', 'DEFAULTS_PATH': '/usr/share/gconf/ubuntu.default.path', 'XDG_CURRENT_DESKTOP': 'Unity', 'UPSTART_SESSION': 'unix:abstract=/com/ubuntu/upstart-session/1000/1603', 'QT4_IM_MODULE': 'fcitx', 'QT_LINUX_ACCESSIBILITY_ALWAYS_ON': '1', 'LOGNAME': 'wangwen', 'JOB': 'unity-settings-daemon', 'PWD': '/mnt/hgfs/python32_gx/day16', 'IM_CONFIG_PHASE': '1', 'PYCHARM_HOSTED': '1', 'LANGUAGE': 'zh_CN:zh', 'PYTHONPATH': '/home/wangwen/pylianxi', 'SHELL': '/bin/bash', 'GIO_LAUNCHED_DESKTOP_FILE': '/home/wangwen/.local/share/applications/jetbrains-pycharm-ce.desktop', 'INSTANCE': '', 'GTK2_MODULES': 'overlay-scrollbar', 'UPSTART_INSTANCE': '', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'GTK_MODULES': 'gail:atk-bridge:unity-gtk-module', 'CLUTTER_IM_MODULE': 'xim', 'XDG_SESSION_PATH': '/org/freedesktop/DisplayManager/Session0', 'COMPIZ_BIN_PATH': '/usr/bin/', 'SESSIONTYPE': 'gnome-session', 'XDG_SESSION_DESKTOP': 'ubuntu', 'SHLVL': '0', 'COMPIZ_CONFIG_PROFILE': 'ubuntu', 'UPSTART_JOB': 'unity7', 'QT_IM_MODULE': 'fcitx', 'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg', 'GNOME_KEYRING_CONTROL': '', 'LANG': 'zh_CN.UTF-8', 'XDG_SEAT_PATH': '/org/freedesktop/DisplayManager/Seat0', 'XDG_SESSION_TYPE': 'x11', 'XDG_SESSION_ID': 'c2', 'DISPLAY': ':0', 'GDM_LANG': 'zh_CN', 'PYTHONIOENCODING': 'UTF-8', 'XDG_GREETER_DATA_DIR': '/var/lib/lightdm-data/wangwen', 'UPSTART_EVENTS': 'xsession started', 'SESSION': 'ubuntu', 'GPG_AGENT_INFO': '/home/wangwen/.gnupg/S.gpg-agent:0:1', 'DESKTOP_SESSION': 'ubuntu', 'USER': 'wangwen', 'GIO_LAUNCHED_DESKTOP_FILE_PID': '12487', 'QT_ACCESSIBILITY': '1', 'SSH_AUTH_SOCK': '/run/user/1000/keyring/ssh', 'XDG_SEAT': 'seat0', 'PYTHONUNBUFFERED': '1', 'QT_QPA_PLATFORMTHEME': 'appmenu-qt5', 'XDG_RUNTIME_DIR': '/run/user/1000', 'XDG_VTNR': '7', 'HOME': '/home/wangwen', 'GNOME_KEYRING_PID': '' } ) """ os.environ["PATH"] += ":/home/wangwen/mywork" os.system("wangwen") #--os 模块属性 #name 获取系统标识 linux,mac ->posix windows -> nt print(os.name) #sep 获取路径分割符号 linux,mac -> / window-> *** print(os.sep) #linesep 获取系统的换行符号 linux,mac -> n window->rn 或 n print(repr(os.linesep))2. os_shutil
# ### os 模块 (文件 *** 作) 新建/删除/ import os os.chdir("/home/wangwen/mywork") # -- os模块具有 新建/删除/ #os.mknod 创建文件 # os.mknod("1.txt") #os.remove 删除文件 # os.remove("1.txt") #os.mkdir 创建目录(文件夹) # os.mkdir("ceshi111") #os.rmdir 删除目录(文件夹) # os.rmdir("ceshi111") #os.rename 对文件,目录重命名 # os.rename("2.txt","3.txt") #os.makedirs 递归创建文件夹 # os.makedirs("a/b/c/d/e/f") #os.removedirs 递归删除文件夹(空文件夹) # os.removedirs("a/b/c/d/e/f") # ### shutil模块 复制/移动/ import shutil #copyfileobj(fsrc, fdst[, length=16*1024]) 复制文件 (length的单位是字符(表达一次读多少字符/字节)) """ fp_src = open("3.txt",mode="r",encoding="utf-8") fp_dst = open("4.txt",mode="w",encoding="utf-8") shutil.copyfileobj(fp_src,fp_dst) """ #copyfile(src,dst) #单纯的仅复制文件内容 , 底层调用了 copyfileobj # shutil.copyfile("4.txt","5.txt") #copymode(src,dst) #单纯的仅复制文件权限 , 不包括内容 (虚拟机共享目录都是默认777) """注意: 要先有两个文件才可以,不会默认创建""" shutil.copymode("4.txt","5.txt") #copystat(src,dst) #复制所有状态信息,包括权限,组,用户,修改时间等,不包括内容 shutil.copystat("4.txt","5.txt") #copy(src,dst) #复制文件权限和内容 shutil.copy("5.txt","6.py") #copy2(src,dst) #复制文件权限和内容,还包括权限,组,用户,时间等 shutil.copy2("5.txt","7.py") #copytree(src,dst) #拷贝文件夹里所有内容(递归拷贝) # shutil.copytree("lianxi","lianxi2") #rmtree(path) #删除当前文件夹及其中所有内容(递归删除) # shutil.rmtree("lianxi2") #move(path1,paht2) #移动文件或者文件夹 # shutil.move("7.py","lianxi/888.php") shutil.move("7.py","/888.php")3. os_path
# ### os.path 路径模块 import os pathvar = "/home/wangwen/mywork/ceshi.py" pathvar = __file__ #basename() 返回文件名部分 res = os.path.basename(pathvar) print(res) #dirname() 返回路径部分 res = os.path.dirname(pathvar) print(res) #split() 将路径拆分成单独的文件部分和路径部分 组合成一个元组 print(os.path.split(__file__)) #join() 将多个路径和文件组成新的路径 可以自动通过不同的系统加不同的斜杠 linux / windows *** path1 = "home" path2 = "wangwen" path3 = "mywork" pathvar = path1 + os.sep + path2 + os.sep + path3 print(pathvar) # 用join改造 path_new = os.path.join(path1,path2,path3) print(path_new) #splitext() 将路径分割为后缀和其他部分 (了解) pathvar = "/home/wangwen/mywork/ceshi.py" print( os.path.splitext(pathvar) ) print( pathvar.split(".")[-1] ) #getsize() 获取文件的大小 *** # pathvar = os.path.dirname(__file__) # 方法一 pathvar = os.getcwd() # 方法二 path_new = os.path.join(pathvar,"2.py") print(path_new) # 计算文件大小 res = os.path.getsize(path_new) print(pathvar) res = os.path.getsize("/mnt/hgfs/python32_gx/day14") print(res) #isdir() 检测路径是否是一个文件夹 *** res = os.path.isdir("/mnt/hgfs/python32_gx/day14") print(res) #isfile() 检测路径是否是一个文件 *** res = os.path.isfile("/mnt/hgfs/python32_gx/day16/1.py") print(res) #islink() 检测路径数否是一个链接 res = os.path.islink("/home/wangwen/mywork/1122.py") print(res) #getctime() [windows]文件的创建时间,[linux]权限的改动时间(返回时间戳) import time res = os.path.getctime("/home/wangwen/mywork/4.txt") #getmtime() 获取文件最后一次修改时间(返回时间戳) res = os.path.getmtime("/home/wangwen/mywork/4.txt") #getatime() 获取文件最后一次访问时间(返回时间戳) res = os.path.getatime("/home/wangwen/mywork/4.txt") print(res) print(time.ctime(res)) #exists() 检测指定的路径是否存在 *** res = os.path.exists("/home/wangwen/mywork/4.txt") # res = os.path.exists("4.txt") print(res,"<============>") #isabs() 检测一个路径是否是绝对路径 res = os.path.isabs("2.py") print(res) #abspath() 将相对路径转化为绝对路径 res = os.path.abspath("2.py") print(res) pathvar = "2.py" if not os.path.isabs(pathvar): abs_path = os.path.abspath("2.py") print(abs_path) # ### 作业题 : 计算一个文件夹中的所有文件大小4. tarfile压缩模块
# ### tarfile 压缩模块 import tarfile # (1) 压缩文件 # 1.只是单纯的打包. # 创建压缩包 tf = tarfile.open("ceshi0930_0.tar","w",encoding="utf-8") # 写入文件 """add(路径,别名)""" tf.add("/bin/chown","chown") tf.add("/bin/cp","cp") tf.add("/bin/dash","tmp/dash") # 关闭文件 tf.close() # 378880 # 2.使用gz算法压缩 tf = tarfile.open("ceshi0930_1.tar.gz","w:gz",encoding="utf-8") # 写入文件 """add(路径,别名)""" tf.add("/bin/chown","chown") tf.add("/bin/cp","cp") tf.add("/bin/dash","tmp/dash") # 关闭文件 tf.close() # 180413 # 3.使用bz2算法压缩 tf = tarfile.open("ceshi0930_2.tar.bz2","w:bz2",encoding="utf-8") # 写入文件 """add(路径,别名)""" tf.add("/bin/chown","chown") tf.add("/bin/cp","cp") tf.add("/bin/dash","tmp/dash") # 关闭文件 tf.close() # 163261 # (2) 解压文件 tf = tarfile.open("ceshi0930_1.tar.gz","r",encoding="utf-8") """ extract(文件,路径) 解压单个文件""" tf.extract("chown","ceshi0930_1") """ extract(路径) 解压所有文件""" tf.extractall("ceshi0930_1_2") tf.close() # (3) 追加文件 """对已经压缩过的包无法进行追加文件,只能是没有压缩过的包进行追加文件""" tf = tarfile.open("ceshi0930_0.tar","a",encoding="utf-8") tf.add("/bin/mkdir","mkdir") tf.close() # 使用with进行改造 with tarfile.open("ceshi0930_0.tar","a",encoding="utf-8") as tf: tf.add("/bin/mkdir","mkdir234") # (4) 查看文件 with tarfile.open("ceshi0930_0.tar","r",encoding="utf-8") as tf: lst = tf.getnames() print(lst) # ### 追加文件到压缩包中在压缩 import os,shutil """ 1.把已经压缩的包进行解压 2.把要追加的内容放进去 3.过滤文件重新压缩 """ # 记录压缩包所在的绝对路径 pathvar1 = os.path.abspath("ceshi0930_2.tar.bz2") # 要解压到哪个文件夹中(绝对路径) pathvar2 = os.path.join( os.getcwd() , "ceshi0930_2" ) print(pathvar1)# /mnt/hgfs/python32_gx/day16/ceshi0930_2.tar.bz2 print(pathvar2)# /mnt/hgfs/python32_gx/day16/ceshi0930_2 # 1.把已经压缩的包进行解压 with tarfile.open(pathvar1,"r",encoding="utf-8") as tf: tf.extractall(pathvar2) # 2.把要追加的内容放进去 shutil.copy("/bin/echo" , pathvar2) # 3.过滤文件重新压缩 # 查看文件夹当中有什么文件 lst = os.listdir(pathvar2) print(lst) # ['chown', 'cp', 'echo', 'tmp'] with tarfile.open(pathvar1,"w:bz2",encoding="utf-8") as tf: for i in lst: if i != "chown": # 拼凑成完整的绝对路径 abs_path = os.path.join(pathvar2,i) # 剩下的都要压缩 """add(路径,别名)""" tf.add(abs_path,i) """ /mnt/hgfs/python32_gx/day16/ceshi0930_2/chown /mnt/hgfs/python32_gx/day16/ceshi0930_2/cp /mnt/hgfs/python32_gx/day16/ceshi0930_2/echo tf.add("/bin/chown","chown") """
小提示:
在压缩文件的时候,路劲写全路径的话前面要加r,repr,让n特殊符号失效 想要输出% 输入%%-->% system()不能自动转换字符集,在linux中显示正常,在windows会乱码 popen()可以自动转换字符集 os.path.sdfsd os相当于文件夹,文件夹里有个path的模块(文件),文件里有一堆函数5. 小练习
os_path小练习: 计算一个文件夹中的所有文件大小
# ### 1.注册登录小程序 # 注册: (1)检测两次密码如果相同,确认注册成功 (2)检测两次密码如果不同,提示两次密码不一致 (3)用户名不能重复 # 登录: (1)输入账号密码:如果都正确,登录成功 (2)如果用户登录时进行三次校验,都不对,记录黑名单文件中 (3)如果是黑名单的用户,禁止下次再次登录 # ### 2.购物车小程序 # 1. 用户先给自己的账户充钱:比如先充3000元。 # 2. 页面显示 序号 + 名称 + 价格 , 如: # [===========有如下商品供您选择:===========] # 序号 名称 价格 # 1 电脑 1999 # 2 鼠标 10 # 3 游艇 20 # 4 美女 998 # n或N 购物车结算 # q或Q 退出程序(如不结算购物车可直接退出)] # [==========================================] # 购物车结算 # 3. 用户输入选择的商品序号,然后打印商品名称及商品价格,并将此商品,添加到购物车,用户还可继续添加商品。 # 4. 如果用户输入的商品序号有误,则提示输入有误,并重新输入。 # 5. (1)用户输入n为购物车结算,依次显示用户购物车里面的商品,数量及单价 # (2)若充值的钱数不足则让用户删除某商品,直至可以购买,若充值的钱数充足,则可以直接购买退出 # (3)退出程序之后,依次显示用户购买的商品,数量,单价,以及此次共消费多少钱,账户余额多少 # 6. 用户输入Q或者q 直接退出程序。 shopping_data.json文件 {"name":"电脑","price":1999} {"name":"鼠标","price":10} {"name":"游艇","price":20} {"name":"美女","price":998} {"name":"风油精","price":30}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)