os、sys和shutil模块
运行环境:python3
OS模块:os 模块提供了一个统一的操作系统的接口函数
下面的path指路径的意思
os.stat(file) #查询文件属性操作
os.sep #取代操作系统特定的路径分隔符
os.pathsep #输出用于分割文件路径的字符串
os.linesep
#给出当前平台的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'
os.name #获取当前用的平台,nt代表windows,posix代表linux
os.getcwd())#得到当前工作目录,即当前Python脚本工作的目录路径
os.listdir(path) #获取目录下的所有文件和文件夹,不加参数默认为当前目录
os.mkdir(path) #创建单级目录,如果目录存在则报错
os.makedirs(path) #创建多级目录,可以生成多层递归目录,如果目录存在则报错
os.rmdir(path) #删除一个目录,注意目录下必须为空,有文件则报错
os.removedirs(path) #删除多级目录,可以删除多层递归的空目录,注意目录下必须为空,有文件则报错
os.remove(path)#删除一个文件
os.rename(src,dst) #文件重命名,注意dst(要修改的文件名)必须不存在。
print(__file__) #获取当前文件的相对路径
os.chdir() #改变目录
os.system()#
运行shell命令
os.getenv()
和os.putenv()
#分别用来读取和设置环境变量 os.putenv('PATH',BaseDir) os.getenv('PATH')
os.environ() #获取系统环境变量
os.walk(path):生成目录树下的所有文件名
如:
print(os.walk('c:'+os.sep+'python35')) #迭代器
for i in os.walk('c:'+os.sep+'python35'):
print(i)
->打印c:\python35下的所有文件
os.chdir(
"dirname"
) 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: (
'.'
)
os.pardir 获取当前目录的父目录字符串名:(
'..'
)
os.path模块
下面的path指路径的意思
os.path.split(path):以元组的形式分割文件名与目录(如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
os.path.join(path):连接目录与文件名,不会判断文件或目录是否存在
print(os.path.abspath(__file__)):获取绝对路径
os.path.dirname(path):返回path的上一级,相当于os.path.split(path)[0]
os.path.basename(path):返回文件名或者目录名,相当于os.path.split(path)[1]
os.path.getsize(path):获得文件大小
os.path.isfile(path):判断路径是不是一个文件,这里path可以是字节形式的。
print(os.path.isfile(b'server.py'))
print(os.path.isfile('server.py'))
两者都是True
os.path.isdir(path):判断路径是不是一个目录
os.path.isabs(path):判断路径是否为绝对路径
os.path.exists(path):判断路径是否存在
os.path.getatime(path):返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path):返回path所指向的文件或者目录的最后修改时间
更多参考:https://docs.python.org/2/library/os.html?highlight=os#module-os
sys模块
sys.argv:实现从程序外部向程序传递参数
sys.exit():程序中间的退出
sys.getdefaultencoding():获取系统当前编码,python3:utf8,python2:ascii
sys.path:获取环境变量的列表集合,如需在不同目录下调用模块,可用该方法。
例子:在不同文件下互相调用模块
如主文件在day2下,现在我们要调用day1的模块,那我们就得得到day的路径并且加入到环境变量中如下。
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #得到当前文件的上上一级目录
sys.path.append(base_dir) #添加到环境变量
sys.stdin\stdout\stderr # stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们
sys.platform # 返回操作系统平台名称
sys.version #获取Python解释程序的版本信息
更多参考:https://docs.python.org/2/library/sys.html?highlight=sys#module-sys
shutil模块
高级的文件、文件夹、压缩包处理模块
# f = open('shutil_text')
# f2 = open('shutil_new','w')
# shutil.copyfileobj(f,f2) #将文件内容拷贝到另一个文件中,可以部分内容,要打开文件才能拷贝文件 #shutil.copy('shutil_text',r'shutil_text') #拷贝文件和权限
"""如果目的路径是一个目录,那就把源文件的文件名作为文件名拷贝到目的路径下,
如果目的路径存在且不是一个目录,如果文件存在,则拷贝到该文件下,文件不存在,则创建文件并拷贝内容至该文件
如果目录不存在,则报错
如果两个是相同路径且相同的文件名,则报SameFileError错误
"""
#shutil.copy2(src,dst) #拷贝文件和状态信息
#shutil.copyfile(src,dst) #拷贝文件
#shutil.copymode(src,dst) #仅拷贝权限。内容、组、用户均不变
#shutil.copystat(src,dst) #拷贝状态的信息,包括:mode bits, atime, mtime, flags #shutil.copytree(r'c:\luxj',r'd:\lxj\text1') #递归的去拷贝文件
#shutil.rmtree(path) #递归的去删除文件 #shutil.move(r'c:\luxj',r'd:\lxj\text1') #递归的去移动文件
shutil.make_archive(base_name, format,...)
创建压缩包并返回文件路径,例如:zip(压缩)、tar(只打包)
- base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如:www =>保存至当前路径
如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/ - format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
- root_dir: 要压缩的文件夹路径(默认当前目录)
- owner: 用户,默认当前用户
- group: 组,默认当前组
- logger: 用于记录日志,通常是logging.Logger对象
如:shutil.make_archive(r'c:\aaaaa','zip',r'd:\lxj\text1')
shutil.make_archive(r'c:\aaaa','tar',r'd:\lxj\text1') #试了下只能压缩目录,不能压缩单个文件
shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:
import zipfile 压缩 # z = zipfile.ZipFile(r"c:\aaaaa.zip",'a') #目前只能解决压缩单个文件,压缩目录可用shutil.make_archive
# z.write('shutil_new') #这里取决你选取的模式,如果是w,清空再压缩至该文件,如果是a则追加
# z.close()
解压 z = zipfile.ZipFile(r"c:\aaaaa.zip",'r')
z.extractall('c:')
z.close()
import tarfile
压缩
# tar = tarfile.open(r"c:\your.tar",'w')
# tar.add(r"d:\lxj\text1",arcname='sx') #加上arcname可以压缩目录
# tar.close() 解压
tar = tarfile.open('c:\your.tar','r')
tar.extractall('c:') # 可设置解压地址
tar.close()
os、sys和shutil模块的更多相关文章
- Python sys和shutil模块
# !/user/bin/python # -*- coding: utf-8 -*- import sys # version 获取版本信息 sys.version # maxint 支持的最大in ...
- python模块 os&sys&subprocess&hashlib模块
os模块 # os模块可根据带不带path分为两类 # 不带path print(os.getcwd()) # 得到当前工作目录 print(os.name) # 指定你正在使用的操作系统,windo ...
- Python (time、datetime、random、os、sys、shutil)模块的使用
######################################################### 模块time ################################### ...
- python基础四(json\os\sys\random\string模块、文件、函数)
一.文件的修改 文件修改的两种思路: 1.把文件内容拿出来,做修改后,清空原来文件的内容,然后把修改过的文件内容重新写进去. 步骤: 1.打开文件:f=open('file','a+') #必须用a ...
- Python os.removedirs() 和shutil.rmtree() 用于删除文件夹
概述 os.removedirs() 方法用于递归删除目录.像rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹,直到抛出一个error(它基本上被忽略,因为它一般 ...
- 6.4.1 标准库 os、os.path 与 shutil 简介
os模块除了提供使用操作系统功能和访问文件系统的简便方法之外,还提供了大量文件与文件夹操作的方法,如下表所示. 方法 功能说明 access(path,mode) 按照 mode 指定的权限访问文件 ...
- python 常用模块之os、sys、shutil
目录: 1.os 2.sys 3.shutil 一.os模块 说明:os模块是对操作系统进行调用的接口 os.getcwd() #获取当前工作目录,即当前python脚本工作的目录路径 os.chdi ...
- Python模块 - os , sys.shutil
os 模块是与操作系统交互的一个接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录: ...
- python 关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)
一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname&quo ...
随机推荐
- MBP清除NVRAM和PRAM
Mac 会将某些设置存储在特定的存储区中,即使关机这些设置也不会丢失.在基于 Intel 的 Mac 上,存储位置是称为 NVRAM 的内存:而在基于 PowerPC 的 Mac 上,存储位置则是称为 ...
- AC日记——最大子段和 洛谷 P1115
题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 输入文件maxsum1.in的第一行是一个正整数N,表示了序列的长度. 第2行包含N个绝对值不大于10000 ...
- Codeforces 486D Valid Sets (树型DP)
题目链接 Valid Sets 题目要求我们在一棵树上计符合条件的连通块的个数. 满足该连通块内,点的权值极差小于等于d 树的点数满足 n <= 2000 首先我们先不管这个限制条件,也就是先考 ...
- DispatcherServlet url-pattern中 /、/*、*.do中的区别与作用
DispatcherServlet url-pattern中 /./*.*.do中的区别与作用 "/'表示匹配所有请求(其中包含除.jsp和.jspx外的所有后缀). 如果不配置静态资源,它 ...
- TortoiseSVN如何更换或重置登录用户
昨天手贱把svn重新卸载了,再安装后便与之前的项目断了,因为第一次使用这个,也不清楚再怎么登录,还有就是上次是使用别人的账号,也不知道怎么清除别人的账号. 鼠标右键找到settings,点击打开 找到 ...
- codevs——1690 开关灯
1690 开关灯 USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description YYX家门前的街上有N( ...
- connectTimeOut和readTimeout
网络编程时,经常遇到很多timeout异常,下面是java URLConnection 中经典的2种 timeout参数,这些参数设置不当的话,就会遇到timeout 异常. 1. ConnectTi ...
- How to resolve 'Potential Leak' issue
-1 down vote favorite I am using the 'analyze' tool in xcode to check for potential leakages in my a ...
- ffmpeg实时编码解码部分代码
程序分为编码端和解码端,两端通过tcp socket通信,编码端一边编码一边将编码后的数据发送给解码端.解码端一边接收数据一边将解码得到的帧显示出来. 代码中的编码端编码的是实时屏幕截图. 代码调用 ...
- [转] twemproxy ketama一致性hash分析
评注:提到HAProxy业务层proxy, twemproxy存储的proxy. 其中还提到了ketama算法的实现源码 转自:http://www.cnblogs.com/basecn/p/4288 ...