常用方法
open():打开指定的文件,返回一个file object。该方法是内置函数,不需要导入做任何模块即可使用,跟help方法一样。在打开文件时,可选择传入的模式。模式有三种:
a——文件不存在则新建,已有则将内容追加到文件结尾,可写不可读。
w——新建不存在的文件,清除已有文件的旧内容,可写不可读。清空原文件内容,重新写入新的内容。如果文件不存在,就新建。
r——不新建,可读不可写。读取文件内容,默认模式。如果文件不存在,就报错。此模式下,可读不可写——调用write()等写入方法会报错。
r+——不新建可读可写,从指针开始处覆盖要写入的内容的长度。
w+——新建可读可写,清空旧内容。
a+——可读可写新建,不覆盖旧内容。将新内容追加到文件末尾,不管指针指向何处。
上述几个模式具体可参考该链接。
read():file object中的方法,从当前指针位置一直读取到文件末尾。也可以指定读取的字节数。
readline():读取一行,也可以指定最大读取原字节数,直到这行的末尾。
readlines():返回列表,列表中的每一个元素都是一行。
close():关闭file object。执行关闭操作后的file object不能再进行别的操作。
write():向文件中写入内容。几个方法示例如下:
f = file('re.txt','r') # a,w可读可写 r只可读
f.write('这是写的\n')
f.close()
f = open('re.txt') # 使用内置函数open打开指定的文件
print f.read()
f.close()
writelines():将序列中的字符串依次写入到文件中。注意:不会换行,不是每一个元素单独一行。它只是相当于遍历序列,并使用write()操作每一个元素而已。如:
f = file('re.txt','a+') # a,w可读可写 r只可读
L = ['first\n','second','third','fourth'] # fafads#这句话之前是旧有的-----firstsecondthirdfourth
f.writelines(L)
f.close()
flush():写入内容后,内容只是存储在缓存中,通过flush()将缓存中的内容刷新到文件中。
next():返回当前行,并将指针指向下一行,与java中Iterable中的next()功能相同。
seek(offset[,whence]):移动文件指针。offset指偏移位置。whence为0时,offset从文件开头开始算;为1时offset从当前位置开始算;为2时从文件末尾开始算。例如:
f = file('re.txt','a+') #文件内容为a-z26个字母
f.seek(-3,2) # 从文件结尾向前移动3个字节
print f.read() # xyz
f.close()
OS
跟系统相关的一些操作,它是一个模块。
name:属性,获取操作系统名。nt表示window,posix表示Linux,Unix以及 mac os
getpid():获取当前进程的id。
getppid():获取当前进程的孵化进程的id。
import os
from multiprocessing import Process # Process是跨平台的进程
def fun(name):
print("process %s-%s-%s" % (name, os.getpid(), os.getppid()))
if __name__ == '__main__':
print(os.getpid()) # 2612
p = Process(target=fun, args=('args----',))
p.start()
p.join()
environ
跟系统环境变量相关。
os.environ:获取整个环境变量。
os.environ.get(key):获取key值对应的环境变量。
import os
print(os.environ) # 获取所有的环境变量
print(os.environ.get("PATH")) # 获取系统中PATH对应的环境变量值
文件
一部分在os模块中,一部分在os.path模块中。以path点开头的表示在os.path模块中。
path.abspath(file):获取指定文件所在的绝对路径。
path.join():将路径拼接,类似于自己手写a1+'/'+a2。如:
import os
path = os.path.join('.\\aaa' , 'xxx.txt')
print(path) # .\aaa\xxx.txt .表示当前文件所在的父目录
path.split():与join()相反,将一个完整的路径拆分成目录以及最后级别的文件或文件夹,如:
import os
path = os.path.join('.','aaa.txt')
print(os.path.split(path)) # ('.', 'aaa.txt')
将一个完整的path拆分成了一个目录,以及最后一级的文件名。
path.splitext():将一个完整的路径拆分成路径以及扩展名,可以用它来获取某个文件的扩展名。如:
import os
path = os.path.join('.','aaa.txt')
print(os.path.splitext(path)) # ('.\\aaa', '.txt')
将path拆解成一个路径以及一个扩展名。如果最后一级是目录,则返回的元组的第二个元素为空。
path.isdir():判断指定的文件是不是文件夹。
path.isfile():判断指定的路径是不是文件。
mkdir():创建文件夹。
makedirs():创建多级文件夹——指定的路径中有未创建的文件夹时,会依次进行创建。
rmdir(path):删除空文件夹,不能删除文件,也不能删除非空文件夹。
removedirs(path):删除多级文件夹。删除时文件夹必须为空。子文件夹删除后,会删除父文件夹——如果此时父文件夹为空的话。
remove():删除文件,不能用来删除文件夹。
rename():将指定的文件或文件夹重新命名。
listdir():列出指定目录下的所有文件,包括文件夹与文件,但不包括子文件夹下的文件。使用.代表当前目录,..代表当前目录的上一级目录。
getcwd():获取当前目录所在的绝对路径。
walk():遍历一个文件夹及其子文件夹。对于一个文件夹,它会返回(dirpath,dirnames,filenames)形式的元组。第一个参数表示当前文件夹的路径,为一字符串;第二个列表,表示当前文件夹下的所有文件夹;第三个为列表,表示当前文件夹下的所有文件。
当当前目录遍历完成时,会依次遍历其目录下的所有子文件夹,并且每一个文件夹的返回形式也是(dirpath,dirnames,filenames)。所以利用该函数可以很方便地遍历某一个文件。如:
for x,y,z in os.walk('.'): # walk会自动遍历当前目录下的所有子文件夹
for name in z: # 遍历当前目录下的文件,输出路径即可
print os.path.join(x,name)