目录操作
1、得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()
>>> import os
>>> os.getcwd()
'/home/jack'
2、返回指定目录下的所有文件和目录名:os.listdir()
>>> os.listdir('/home/jack')
['.profile', '.bashrc', 'test', '.bash_logout']
3、函数用来删除一个文件:os.remove()
#创建文件 >>> os.mknod("t1.txt")
#显示当前目录下的所有文件
>>> os.listdir('/home/jack')
['.profile', '.bashrc', 't1.txt', 'test', '.bash_logout']
#删除文件
>>> os.remove("t1.txt")
>>> os.listdir('/home/jack')
['.profile', '.bashrc', 'test', '.bash_logout']
4、删除多个目录:os.removedirs(r“c:\python”)
#创建多个目录
>>> os.makedirs("t1/t2")
>>> os.listdir('/home/jack')
['.profile', '.bashrc', 't1', 'test', '.bash_logout']
>>> os.listdir('/home/jack/t1')
['t2']
#删除多个目录
>>> os.removedirs(r"/home/jack/t1/t2")
os.listdir('/home/jack')
['.profile', '.bashrc', 'test', '.bash_logout']
5、检验给出的路径是否是一个文件:os.path.isfile()
>>> os.path.isfile('.bashrc')
True
>>> os.path.isfile('.bashrc1')
False
6、检验给出的路径是否是一个目录:os.path.isdir()
>>> os.path.isdir('/home/jack/test')
True
>>> os.path.isdir('/home/jack/test1')
False
7、判断是否是绝对路径:os.path.isabs()
>>> os.path.isabs('/home/jack/test')
True
>>> os.path.isabs('test')
False
8、检验给出的路径是否真地存:os.path.exists()
>>> os.path.exists('test')
True
>>> os.path.exists('test1')
False
9、返回一个路径的目录名和文件名:os.path.split()
>>> os.path.split('/home/jack/test')
('/home/jack', 'test')
10、分离扩展名:os.path.splitext()
>>> os.path.splitext('/home/jack/test')
('/home/jack/test', '')
11、获取路径名:os.path.dirname()
>>> os.path.dirname('/home/jack/')
'/home/jack'
12、获取文件名:os.path.basename()
>>> os.mknod('a.txt')
>>> os.path.basename('/home/jack/a.txt')
'a.txt'
13、运行shell命令: os.system()
>>> os.system('ls -a')
. .. a.txt .bash_logout .bashrc .profile test
14、读取和设置环境变量:os.getenv() 与os.putenv()
getenv(key, default=None)
Get an environment variable, return None if it doesn't exist.
The optional second argument can specify an alternate default.
15、重命名:os.rename(old, new)
>>> import os
>>> os.listdir("/home/jack")
['.profile', 'a.txt', '.bashrc', '.bash_history', '.ipython', 'test', '.bash_logout']
>>> os.rename('a.txt','b.txt')
>>> os.listdir('/home/jack')
['.profile', '.bashrc', '.bash_history', '.ipython', 'b.txt', 'test', '.bash_logout']
16、创建多级目录:os.makedirs()
>>> os.makedirs('t1/t2')
>>> os.listdir('/home/jack')
['.profile', '.bashrc', '.bash_history', '.ipython', 't1', 'b.txt', 'test', '.bash_logout']
>>> os.listdir('/home/jack/t1')
['t2']
17、创建单个目录:os.mkdir()
>>> os.mkdir('abc')
>>> os.listdir('/home/jack')
['.profile', 'abc', '.bashrc', '.bash_history', '.ipython', 't1', 'b.txt', 'test', '.bash_logout']
18、获取文件属性:os.stat(file)
>>> os.stat('b.txt')
posix.stat_result(st_mode=33152, st_ino=927137, st_dev=64769, st_nlink=1, st_uid=1001, st_gid=1001, st_size=0, st_atime=1510235921, st_mtime=1510235921, st_ctime=1510277660)
19、修改文件权限与时间戳:os.chmod(file)
参考博客:http://blog.csdn.net/wirelessqa/article/details/7974477
20、终止当前进程:os.exit()
21、获取文件大小:os.path.getsize(filename)
>>> os.path.getsize('b.txt')
0
文件操作
os.mknod("test.txt") #创建空文件
fp = open("test.txt",w) #直接打开一个文件,如果文件不存在则创建文件
r:以读方式打开文件,可读取文件信息。
w:以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容;如果文件不存在则创建
a:以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建
r+:以读写方式打开文件,可对文件进行读和写操作。
w+:消除文件内容,然后以读写方式打开文件。
a+:以读写方式打开文件,并把文件指针移到文件尾。
b:以二进制模式打开文件,而不是以文本模式。该模式只对Windows或Dos有效,类Unix的文件是用二进制模式进行操作的。
文件操作方法
常见文件操作方法:
方法
f.close() 关闭文件,记住用open()打开文件后一定要记得关闭它,否则会占用系统的可打开文件句柄数。
f.name() 获取文件名称
f.next() 返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。
f.flush() 刷新输出缓存,把缓冲区的内容写入硬盘
f.isatty() 如果文件是一个终端设备文件(Linux系统中),则返回True,否则返回False。
f.read([size]) 读出文件,size为读取的长度,以byte为单位
f.readline([size]) 读出一行信息,若定义了size,则读出一行的一部分
f.readlines([size]) 读出所有行,也就是读出整个文件的信息。(把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分)
f.seek(offset[,where])
把文件指针移动到相对于where的offset位置。where为0表示文件开始处,这是默认值;1表示当前位置;2表示文件结尾。(注意:如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾)
f.tell() 获得文件指针位置,标记当前位置,以文件开头为原点
f.truncate([size]) 把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。
f.write(string) 把string字符串写入文件,write()不会在str后加上一个换行符。
f.writelines(list) 把list中的字符串一行一行地写入文件,是连续写入文件,没有换行。
文件操作模式举例
w 模式,如果没有文件,会自动创建
>>> os.listdir('/home/jack') ['.profile', 'abc', '.bashrc', '.bash_history', '.ipython', 't1', 'b.txt', 'test', '.bash_logout'] >>> f1 = open('hello.txt','w') >>> f1.write('hello world\n') >>> f1.flush() #刷新输出缓存,把缓冲区的内容写入硬盘 >>> f1.close()
r 模式 只读模式
>>> f1 = open('hello.txt','r') >>> print(f1.read()) hello world
r+ 模式 以读写方式打开文件,可对文件进行读和写操作。会清空原文件
>>> f1 = open('hello.txt','r+') >>> f1.write('hello2 world\n') >>> f1.close() >>> f1 = open('hello.txt','r') >>> print(f1.read()) hello2 world
w+ 模式 消除文件内容,然后以读写方式打开文件。
>>> f1 = open('hello.txt','w+') >>> f1.write('hello world ,hello world\n') >>> f1.close() >>> f1 = open('hello.txt','r') >>> print(f1.read()) hello world ,hello world
a 模式 以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾)
如果文件不存在则创建,原有的文件内容保留
>>> f1 = open('hello.txt','a') >>> f1.write('h2 h2\n') >>> f1.close() >>> f1 = open('hello.txt','r') >>> print(f1.read()) hello world ,hello world h2 h2
a+ 模式 以读写方式打开文件,并把文件指针移到文件尾。
>>> f1 = open('hello.txt','a+') >>> f1.write('h3 h3 h3\n') >>> f1.close() >>> f1 = open('hello.txt','r') >>> print(f1.read()) hello world ,hello world h2 h2 h3 h3 h3
b :模式一般用于二进制文件的操作
文件读写方法
read # 读出所有文件,size为读取的长度,以byte为单位
readline #一行一行的读取
readlines #读出所有行,也就是读出整个文件的信息。(把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分)
f.write(string) 把string字符串写入文件,write()不会在str后加上一个换行符。
f.writelines(list) 把list中的字符串一行一行地写入文件,是连续写入文件,没有换行。