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() 文件的相关操作 文件的相关操作 文件的复制和移动shutil包 copy(src, dst) 复制文件,从src到dst。相当于$cp命令。move(src, dst) 移动文件,从src到dst。相当于$mv命令。 举例 import shut
os包包括各种各样的函数,以实现操作系统的许多功能。这个包非常庞杂。os包的一些命令就是用于文件管理。我们这里列出最常用的:
mkdir(path) 创建新目录,path为一个字符串,表示新目录的路径。相当于$mkdir命令
rmdir(path) 删除空的目录,path为一个字符串,表示想要删除的目录的路径。相当于$rmdir命令
listdir(path) 返回目录中所有文件。相当于$ls命令。
remove(path) 删除 path指向的文件。
rename(src, dst) 重命名文件,src和dst为两个路径,分别表示重命名之前和之后的路径。
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 os
path = '/test/test1/test2/'
print path
print os.chdir(path)
#print os.chdir('/test/test1/test2')
print os.getcwd()
#判断路径是不是存在
if os.getcwd() == "/test/test1/test2":
print 1
文件的复制和移动shutil包
copy(src, dst) 复制文件,从src到dst。相当于$cp命令。
move(src, dst) 移动文件,从src到dst。相当于$mv命令。
举例
import shutil
shutil.copy('a.txt', 'b.txt')
1、open默认以读模式打开,并且我们打开的,一定是个存在的文件,否则会报错。而这个文件,可以是相对路径,也可以是绝对路径
2、但是我们以写模式打开的时候,如果这个文件不存在,则创建,这里面不会报错
3、文件指针的问题
4、readline和readliens是不用加参数的,不是我们期望的读取几行的结果
5、read函数参数的问题:负数和没有参数是一样的效果
6、close不是必须的,但是我们操作完一个文件的时候尽量去close它
7、可以用+模式解决既可以读,又可以写的问题
8、read模式可以用readline和readliens读一行和读多行,但是write模式只写一行,用writelines
9、在a+模式下,文件指针对写不起作用(一定是在追加),但是对读起作用。注意这里和r+的区别
10、tell()函数返回当前文件指针的位置
11、seek()函数将文件指针移动到指定的位置,如果查找的位置超出了文件的长度,这个时候,仍然是将文件指针指到指定的位置,对于读,相当于是放到了文件末尾,但是写,会补充相应个数的0值,然后在指定的位置写入。如果是负值,则会报参数错误(也就是参数的取值范围是自然数)。
12、在r+模式下,seek可以实现从指定位置修改一个文件
13、在a+模式下,不管怎么移动文件指针,对写都不起作用,写一定还是在文件末尾追加,但是可以通过seek去实现从任意位置的读
14、truncate函数按照指定的字符大小截断源文件
os 模块
os.sep 可以取代操作系统特定的路径分隔符。windows下为 '\'
os.name 字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是 'posix'
os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径
os.getenv() 获取一个环境变量,如果没有返回none
os.putenv(key, value) 设置一个环境变量值
os.listdir(path) 返回指定目录下的所有文件和目录名
os.remove(path) 函数用来删除一个文件
os.system(command) 函数用来运行shell命令
os.linesep 字符串给出当前平台使用的行终止符。例如,Windows使用 '
',Linux使用 '
' 而Mac使用 '
'
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是目录返回0L
os.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 src到dst 如果dst是一个存在的directory, 将抛出OSError. 在Unix, 如果dst在存且是一个file, 如果用户有权限的话,它将被安静的替换. 操作将会失败在某些Unix 中如果src和dst在不同的文件系统中. 如果成功, 这命名操作将会是一个原子操作 (这是POSIX 需要). 在 Windows上, 如果dst已经存在, 将抛出OSError,即使它是一个文件. 在unix,Windows中有效。
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 ) 递归删除一个目录以及目录内的所有内容
copy(src, dst) 复制文件,从src到dst。相当于$cp命令。
move(src, dst) 移动文件,从src到dst。相当于$mv命令。
import shutil
shutil.copy('a.txt', 'b.txt')
1、open默认以读模式打开,并且我们打开的,一定是个存在的文件,否则会报错。而这个文件,可以是相对路径,也可以是绝对路径
2、但是我们以写模式打开的时候,如果这个文件不存在,则创建,这里面不会报错
3、文件指针的问题
4、readline和readliens是不用加参数的,不是我们期望的读取几行的结果
5、read函数参数的问题:负数和没有参数是一样的效果
6、close不是必须的,但是我们操作完一个文件的时候尽量去close它
7、可以用+模式解决既可以读,又可以写的问题
8、read模式可以用readline和readliens读一行和读多行,但是write模式只写一行,用writelines
9、在a+模式下,文件指针对写不起作用(一定是在追加),但是对读起作用。注意这里和r+的区别
10、tell()函数返回当前文件指针的位置
11、seek()函数将文件指针移动到指定的位置,如果查找的位置超出了文件的长度,这个时候,仍然是将文件指针指到指定的位置,对于读,相当于是放到了文件末尾,但是写,会补充相应个数的0值,然后在指定的位置写入。如果是负值,则会报参数错误(也就是参数的取值范围是自然数)。
12、在r+模式下,seek可以实现从指定位置修改一个文件
13、在a+模式下,不管怎么移动文件指针,对写都不起作用,写一定还是在文件末尾追加,但是可以通过seek去实现从任意位置的读
14、truncate函数按照指定的字符大小截断源文件
os.sep 可以取代操作系统特定的路径分隔符。windows下为 '\'
os.name 字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是 'posix'
os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径
os.getenv() 获取一个环境变量,如果没有返回none
os.putenv(key, value) 设置一个环境变量值
os.listdir(path) 返回指定目录下的所有文件和目录名
os.remove(path) 函数用来删除一个文件
os.system(command) 函数用来运行shell命令
os.linesep 字符串给出当前平台使用的行终止符。例如,Windows使用 ' ',Linux使用 ' ' 而Mac使用 ' '
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是目录返回0L
os.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 src到dst 如果dst是一个存在的directory, 将抛出OSError. 在Unix, 如果dst在存且是一个file, 如果用户有权限的话,它将被安静的替换. 操作将会失败在某些Unix 中如果src和dst在不同的文件系统中. 如果成功, 这命名操作将会是一个原子操作 (这是POSIX 需要). 在 Windows上, 如果dst已经存在, 将抛出OSError,即使它是一个文件. 在unix,Windows中有效。
os.renames(old, new) 递归重命名文件夹或者文件。像rename()
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 ) 递归删除一个目录以及目录内的所有内容