Python文件操做

对文件进行打包操做

 
 
 
 
 
import osimport tarfile#压缩,建立.gz#建立压缩包名tar = tarfile.open('/tmp/tartest.tar.gz','w:gz')# 建立压缩包for root,dir,files in os.walk("/tmp/tartest"): print root print dir print files for file in files: fullpath = os.path.join(root,file) tar.add(fullpath)tar.close()

文件的相关操做

os包包括各类各样的函数,以实现操做系统的许多功能。这个包很是庞杂。os包的一些命令就是用于文件管理。咱们这里列出最经常使用的:shell

 
 
 
 
 
mkdir(path) 建立新目录,path为一个字符串,表示新目录的路径。至关于$mkdir命令rmdir(path) 删除空的目录,path为一个字符串,表示想要删除的目录的路径。至关于$rmdir命令listdir(path) 返回目录中全部文件。至关于$ls命令。remove(path) 删除 path指向的文件。rename(src, dst) 重命名文件,srcdst为两个路径,分别表示重命名以前和以后的路径。chmod(path, mode) 改变path指向的文件的权限。至关于$chmod命令。chown(path, uid, gid) 改变path所指向文件的拥有者和拥有组。至关于$chown命令。stat(path) 查看path所指向文件的附加信息,至关于$ls -l命令。symlink(src, dst) 为文件dst建立软连接,src为软连接文件的路径。至关于$ln -s命令。getcwd() 查询当前工做路径 (cwd, current working directory),至关于$pwd命令。

判断路径是否是存在

 
 
 
 
 
import ospath = '/test/test1/test2/'print pathprint os.chdir(path)#print os.chdir('/test/test1/test2')print os.getcwd()#判断路径是否是存在if os.getcwd() == "/test/test1/test2": print 1

文件的复制和移动shutil包

 
 
 
 
 
copy(src, dst) 复制文件,从srcdst。至关于$cp命令。move(src, dst) 移动文件,从srcdst。至关于$mv命令。

举例

 
 
 
 
 
import shutilshutil.copy('a.txt', 'b.txt')
 
 
 
 
 
1open默认以读模式打开,而且咱们打开的,必定是个存在的文件,不然会报错。而这个文件,能够是相对路径,也能够是绝对路径2、可是咱们以写模式打开的时候,若是这个文件不存在,则建立,这里面不会报错3、文件指针的问题4readlinereadliens是不用加参数的,不是咱们指望的读取几行的结果5read函数参数的问题:负数和没有参数是同样的效果6close不是必须的,可是咱们操做完一个文件的时候尽可能去close7、能够用+模式解决既能够读,又能够写的问题8read模式能够用readlinereadliens读一行和读多行,可是write模式只写一行,用writelines9、在a+模式下,文件指针对写不起做用(必定是在追加),可是对读起做用。注意这里和r+的区别10tell()函数返回当前文件指针的位置11seek()函数将文件指针移动到指定的位置,若是查找的位置超出了文件的长度,这个时候,仍然是将文件指针指到指定的位置,对于读,至关因而放到了文件末尾,可是写,会补充相应个数的0值,而后在指定的位置写入。若是是负值,则会报参数错误(也就是参数的取值范围是天然数)。12、在r+模式下,seek能够实现从指定位置修改一个文件13、在a+模式下,无论怎么移动文件指针,对写都不起做用,写必定仍是在文件末尾追加,可是能够经过seek去实现从任意位置的读14truncate函数按照指定的字符大小截断源文件

os 模块

 
 
 
 
 
os.sep 能够取代操做系统特定的路径分隔符。windows下为 '\\'os.name 字符串指示你正在使用的平台。好比对于Windows,它是'nt',而对于Linux/Unix用户,它是 'posix'os.getcwd() 函数获得当前工做目录,即当前Python脚本工做的目录路径os.getenv() 获取一个环境变量,若是没有返回noneos.putenv(key, value) 设置一个环境变量值os.listdir(path) 返回指定目录下的全部文件和目录名os.remove(path) 函数用来删除一个文件os.system(command) 函数用来运行shell命令os.linesep 字符串给出当前平台使用的行终止符。例如,Windows使用 '\r\n'Linux使用 '\n' Mac使用 '\r'os.path.split(path) 函数返回一个路径的目录名和文件名os.path.isfile() os.path.isdir()函数分别检验给出的路径是一个文件仍是目录os.path.exists() 函数用来检验给出的路径是否真地存在os.curdir 返回当前目录 ('.')os.mkdir(path) 建立一个目录os.makedirs(path) 递归的建立目录os.chdir(dirname) 改变工做目录到dirname os.path.getsize(name) 得到文件大小,若是name是目录返回0Los.path.abspath(name) 得到绝对路径os.path.normpath(path) 规范path字符串形式os.path.splitext() 分离文件名与扩展名os.path.join(path,name) 链接目录与文件名或目录os.path.basename(path) 返回文件名os.path.dirname(path) 返回文件路径os.walk(top,topdown=True,onerror=None) 遍历迭代目录os.rename(src, dst) 重命名file或者directory srcdst 若是dst是一个存在的directory, 将抛出OSError. Unix, 若是dst在存且是一个file, 若是用户有权限的话,它将被安静的替换. 操做将会失败在某些Unix 中若是srcdst在不一样的文件系统中. 若是成功, 这命名操做将会是一个原子操做 (这是POSIX 须要). Windows上, 若是dst已经存在, 将抛出OSError,即便它是一个文件. unixWindows中有效。os.renames(old, new) 递归重命名文件夹或者文件。像rename()

shutil 模块

 
 
 
 
 
shutil.copyfile( src, dst) 从源src复制到dst中去。固然前提是目标地址是具有可写权限。抛出的异常信息为IOException. 若是当前的dst已存在的话就会被覆盖掉shutil.move( src, dst) 移动文件或重命名shutil.copymode( src, dst) 只是会复制其权限其余的东西是不会被复制的shutil.copystat( src, dst) 复制权限、最后访问时间、最后修改时间shutil.copy( src, dst) 复制一个文件到一个文件或一个目录shutil.copy2( src, dst) copy上的基础上再复制文件最后访问时间与修改时间也复制过来了,相似于cp p的东西shutil.copy2( src, dst) 若是两个位置的文件系统是同样的话至关因而rename操做,只是更名;若是是不在相同的文件系统的话就是作move操做shutil.copytree( olddir, newdir, True/Flase)olddir拷贝一份newdir,若是第3个参数是True,则复制目录时将保持文件夹下的符号链接,若是第3个参数是False,则将在复制的目录下生成物理副原本替代符号链接shutil.rmtree( src ) 递归删除一个目录以及目录内的全部内容
相关文章
相关标签/搜索