python os模块及open函数用法

python脚本开发中经常会遇到系统和文件的操作,梳理下

一、os模块儿

1、获取当前所在路径及路径下的文件

  • os.getcwd():获取当前路径,返回字符串
  • os.listdir(path):列举路径下所有文件,返回列表类型(用来判断文件夹是否为空)
  • os.path.abspath(path):返回path绝对路径,path为".",表示当前目录,".."表示上一级目录
  • os.path.dirname(path):返回path中的文件夹部分,结果不包含'\'
  • os.path.basename(path):返回path的文件名

代码示例:

#coding:utf-8
import os

#获取当前目录
print os.getcwd()
#获取目录下的所有文件,可用于判断目录是否为空
print os.listdir(os.getcwd())
#返回当前目录
print os.path.abspath('.')
#返回上一级目录
print os.path.abspath('..')
#返回path文件夹部分,结尾不包含\,就是把最后一级的"\",左右分开,前边是dirname,后边是basename
print os.path.dirname(os.getcwd())
#返回path文件名部分
print os.path.basename(os.getcwd())

2、路径分解split,路径拼接join

  • os.path.split(path):将路径分解为文件名,文件夹,返回元组类型
  • os.path.join(path1,path2,...):将path进行组合,若有绝对路径,之前的path将被删除。
import os

#若path以'\'结尾,文件名为空;文件名不会包含'\'
print os.path.split('D:\\python27\\test')
print os.path.split('D:\\python27\\test\\')
print os.path.split('D:\\python27\\test')
print os.path.split('D:/python27/test')
print os.path.split('D:/python27/test/')


print os.path.join(os.getcwd(),'test')
print os.path.join(os.getcwd(),'/test')
print os.path.join(os.getcwd(),'\kest')

#'/'之前的路径会被清除
print os.path.join(os.getcwd(),'1','2','3')
print os.path.join(os.getcwd(),'1','2','3','/test')
('D:\\python27', 'test')
('D:\\python27\\test', '')
('D:\\python27', 'test')
('D:/python27', 'test')
('D:/python27/test', '')
F:\Eclipse\pytest\test
F:/test
F:\kest
F:\Eclipse\pytest\1\2\3
F:/test

注:'\','/' 在python这里不区分。

3、查看文件是否存在,创建目录

  • os.path.exists(path):判断文件/文件夹是否存在,返回true,false
  • os.makedirs(path):创建多层目录,递归创建
  • os.mkdir(path):一级一级创建目录,前提是前面目录已存在,不存在会报异常
  • os.remove(path):删除指定的文件
  • os.rmdir(path):删除文件夹(文件夹是空的才会被删除,如果不是空的会报错)
  • os.path.isfile(path):判断path是否是文件
  • os.path.isdir(path):判断path是否是目录
import os

if not os.path.exists(u'F:/test'):
    os.makedirs('F:/test')

二、open函数

打开文件,得到文件句柄并赋值给个变量(文件对象);通过句柄对文件进行操作;关闭文件

f=open('test.txt','w')  #打开文件,赋值给句柄
data=f.read()       #操作句柄读取数据
print(data)
f.close()           #关闭文件

 open函数第一个参数是文件名称(包含路径),第二个参数是操作模式(如下表)

模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

 注:有+表示读写模式,有b表示二进制相关文件,r是读(文件不存在,则报错,w是写(如果文件不存在,创建新文件,这里创建新文件的规则是:如果path不包含路径,文件不存在,则创建;如果path包含路径,路径存在,文件不存在,创建文件;如果path包含路径,路径不存在,则报错,a是在文件后面写

常用系统文件操作示例:

import os

#文件是否存在
if os.path.exists(u'F:/test/test.txt'):
    print u'文件存在'
    
#文件夹是否存在
path='F:\\xixixi'
if not os.path.exists(u'F:/xixixi'):
    os.makedirs(u'F:/xixixi')#创建多层目录
    #目录已有,open函数以写的方式打开文件,文件不存在则创建
    f=open(u'F:/xixixi/text.txt','w')
    #关闭文件
    f.close()
    #with as用法
    with open('F:/xixixi/text.txt') as f:
        print f.read()
        
print os.path.join(path,'text.txt')

注:f.read,readline,readlines有文件指针的概念,read()函数执行完之后,文件指针在文件最后,如果需要操作,比较笨的方法是重新打开文件

你可能感兴趣的:(Python,基础)