os & sys & shutil & configparser
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:woshinidaye 4 5 import os,sys 6 ''' 7 print(os.getcwd()) #获取当前工作目录 8 os.chdir('e:\\') #切换目录 9 os.chdir(r'e:\\工作资料') 10 print(os.curdir) #当前路径 11 print(os.pardir) 12 os.makedirs(r'e:\工作资料\python\a\b') #创建文件夹,递归创建 13 os.makedirs(r'e:\工作资料\python\a\c') #创建文件夹,递归创建 14 os.removedirs(r'e:\工作资料\python\a\c') #删除文件夹,如果系列父文件夹都是空的,那就会递归删除 15 os.mkdir(r'e:\工作资料\python\a\d') #创建文件夹,不能递归创建 16 os.rmdir(r'e:\工作资料\python\a\f') #删除文件夹,即使父文件夹是空,也不会被删除 17 os.remove() #删除文件 18 os.renames(r'e:\工作资料\python\a',r'e:\工作资料\python\aaaa') 19 print(os.stat(r'e:\工作资料\python\1014_dict.py')) #查看文件或文件夹信息 20 print(os.sep) #获取系统的文件夹路径分隔符 21 print(os.pathsep) #获取系统文件夹区分的分隔符 22 print(os.name) #输出系统平台,nt windows 23 print(os.system('dir')) #执行系统命令 24 print(os.system('ipconfig')) #os.system的值会直接打印到屏幕,所以没法赋值给某一个变量 25 print(os.popen('dir')) #一串地址对象 26 print(os.popen('ipconfig').read()) #读取地址对象信息 27 print(os.path.abspath(__file__)) #获取绝对路径 28 print(os.path.split(r'e:\工作资料\python\a')) #分割目录,可以不考虑文件是否存在 29 # os.path.dirname() #返回路径,可以不考虑文件是否存在 30 print(os.path.basename(r'e:\工作资料\python\a')) #获取最后一层,可以不考虑文件是否存在 31 ''' 32 # print(os.path.exists(r'e:\工作资料\python\aaaa')) #判断路径是否存在 33 34 # a = sys.argv 35 # print(a) #命令行list参数,第一个元素是程序本身的路径 36 37 import shutil #高级的文件、文件夹、压缩包处理工具 38 39 40 41 #copyfileobj() #需要先打开文件,再进行拷贝 42 ''' 43 shutil.copyfileobj('src','des',30) #从一个文件对象copy到另外一个文件对象,30表示对象长度 44 a = os.path.dirname(os.path.abspath(__file__))+'\Reptile\h3c.html' 45 f_src = open(a,'r+',encoding='utf-8') 46 f_dst = open('test','w',encoding='utf-8') 47 shutil.copyfileobj(f_src,f_dst,30) 48 print('done!!') 49 ''' 50 #copyfileobj()源码 51 ''' 52 def copyfileobj(fsrc, fdst, length=0): 53 """copy data from file-like object fsrc to file-like object fdst""" 54 # Localize variable access to minimize overhead. 55 if not length: 56 length = COPY_BUFSIZE 57 fsrc_read = fsrc.read 58 fdst_write = fdst.write 59 while True: 60 buf = fsrc_read(length) 61 if not buf: 62 break 63 fdst_write(buf) 64 ''' 65 66 67 68 # shutil.copyfile(src,dst) #COPY文件直接用这个,简单,不用先打开文件 69 a = os.path.dirname(os.path.abspath(__file__))+'\Reptile\h3c.html' 70 # shutil.copyfile(a,'b') 71 72 73 74 # shutil.copy() #COPY一个文件,The destination may be a directory. 75 #这个感觉是复制一个文件到另外一个目录,保留文件名称和属性 76 # shutil.copy(r'e:\工作资料\python\Reptile\h3c.html',r'e:\工作资料\python') 77 # print(os.stat(r'e:\工作资料\python\Reptile\h3c.html')) #两个文件的st_mode是一致的 78 # print(os.stat(r'e:\工作资料\python\h3c.html')) #两个文件的st_mode是一致的 79 ''' 80 if os.path.isdir(dst): 81 dst = os.path.join(dst, os.path.basename(src)) 82 copyfile(src, dst, follow_symlinks=follow_symlinks) 83 copymode(src, dst, follow_symlinks=follow_symlinks) 84 return dst 85 ''' 86 87 # shutil.copystat() #仅对文件的权限进行 88 89 ''' 90 # shutil.move() #移动一个文件或者文件夹 91 shutil.move(r'e:\工作资料\python\h3c.html',r'e:\工作资料\python\h4c.html') #跟Linux类似,还可以用来改名字 92 # Recursively move a file or directory to another location. This is 93 # similar to the Unix "mv" command. Return the file or directory's 94 # destination. 95 ''' 96 97 98 ''' 99 shutil.copytree() #递归复制文件夹、Recursively copy a directory tree and return the destination directory 100 shutil.rmtree() #递归删除文件夹、# Recursively delete a directory tree 101 ''' 102 103 #压缩操作 104 # shutil.make_archive() 105 # shutil.make_archive('test','zip',base_dir=r'e:/工作资料/python/test_dir') 106 # """Create an archive file (eg. zip or tar). 107 # 'base_name' is the name of the file to create, minus any format-specific 108 # extension; 'format' is the archive format: one of "zip", "tar", "gztar", 109 # "bztar", or "xztar". Or any other registered format. 110 #压缩还可以用zipfile 111 import zipfile 112 '''#往里面写w一个文件,就表示向test.zip这个压缩包中添加一个文件,一个一个压缩文件,这个好用 113 z = zipfile.ZipFile(r'e:\工作资料\python\test_dir\test.zip','w') 114 z.write(r'e:\工作资料\python\h4c.html') 115 z.write(r'e:\工作资料\python\log.txt') 116 z.close() 117 118 z = zipfile.ZipFile(r'e:\工作资料\python\test_dir\test.zip','r') #解压就是r 119 z.extract() #提取一个包 120 z.close() 121 ''' 122 #同理,还可以去研究一下tarfile 123 import xml.etree.ElementTree 124 125 126 #pyyaml #yaml格式多用于配置文件 127 #pip install -i https://pypi.douban.com/simple ruamel.yaml 需要先安装 128 #pip install ruamel.yaml 129 from ruamel.yaml import YAML 130 131 132 #configparser #常用于修改配置文件 133 import configparser 134 config = configparser.ConfigParser() #生成一个configparser的对象 135 #[]里面的内容表示section 136 #紧接着section的K-V就是option 137 138 #往里面写 139 ''' 140 a = { 141 'name':'woshinidaye', 142 'age':18, 143 'male':'male' 144 } 145 config['test'] = a 146 with open(r'e:\工作资料\python\test_dir\config.ini','w+',encoding='utf-8') as f : 147 config.write(f) 148 ''' 149 150 #修改option值,可以用set(section,option,value),也直接直接用列表的操作修改 151 #config.set方法对文件对option进行修改和增加 152 ''' 153 config.read(r'e:\工作资料\python\test_dir\config.ini', encoding="utf-8") 154 config.set('test','age','28') #修改 155 config.set('test','school','jialidun') #这也可以用于增加 156 with open(r'e:\工作资料\python\test_dir\config.ini','w+',encoding='utf-8') as f : 157 config.write(f) 158 ''' 159 160 #操作列表的方式增加 161 # a=config.read(r'e:\工作资料\python\test_dir\config.ini', encoding="utf-8") 162 # print(type(a)) #config.read是一个list 163 # config['test2'] = {} #创建一个section list没有item,所以这里创建的时候不同用[],只有字典才能 164 # config['test2'] = {"job":'doctor'} #这样也可以增加 165 # config['test2']['user'] = 'youself' 166 # with open(r'e:\工作资料\python\test_dir\config.ini','w+',encoding='utf-8') as f: 167 # config.write(f) 168 169 #操作列表的方式修改 170 # config['test2']['user'] = 'youself_lllaaa' 171 # with open(r'e:\工作资料\python\test_dir\config.ini','w+',encoding='utf-8') as f: 172 # config.write(f) 173 174 #获取option的值,get(section,option),获取整个section的信息,item(section) 175 ''' 176 config.read(r'e:\工作资料\python\test_dir\config.ini', encoding="utf-8") 177 print(config.items('test'),config.items('test')[1]) #由tuple作为元素组成的list 178 print(config.get('test','age')) 179 ''' 180 print(config.read(r'e:\工作资料\python\test_dir\config.ini', encoding="utf-8")) 181 # print(config.sections()) 182 # print(config.add_section('test4')) 183 # with open(r'e:\工作资料\python\test_dir\config.ini','w+',encoding='utf-8') as f: 184 # config.write(f) 185 186 print('======done========')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言
2020-11-11 一、docker基础,环境准备