文件与file与os

常用方法

        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) 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值