os模块--python文件路径获取和读写

上一篇 / 下一篇  2017-08-28 16:49:52 / 个人分类:python

说明:经常和文件、目录打交道,这是就离不了os模块。os模块包含普遍的操作系统功能,与具体的平台无关。
相对路径相当于程序的当前路径,绝对路径从根目录开始
读写文件过程
1)用import os导入读写模块
读写文件时不需要os模块,但是如果需查看文件路径等信息会需要此模块
2)调用open()函数,返回一个File对象,打开文件
打开文件有三种模式,模式参数为第二个参数:分别为读模式r、写模式w和添加模式a。如:open('fileName','w')
3)调用File对象的read()、readlines()或write()方法,读或写文件。(read返回字符串,readlines返回列表)
4)调用File对象的close()方法,关闭该文件
一般一个open对应一个close。如果打开后不关闭,再次调用时会报错

常用命令:
1)os.path.abspath('path')——相对路径转换绝对路径 D:\Eclipse
2)os.path.relpath('path','start')------返回一个相对路径
3)os.path.join('path1'[, path2[, ...]])——连接目录和文件名。返回含文件分割符的文件字符串。参数类型必须一致为string
4)os.path.dirname('path')——返回最后一个斜杠前的内容(路径名称)
5)os.path.basename('path')------返回最后一个斜杠之后的内容(可能是文件名,也可能是文件加名)
6)os.path.split('path')------把最后一个斜杠的前后的内容,划分为两部分
7)pathName.split(os.path.sep)------把斜杠外的内容均划分为一个部分(此处的pathName是一个变量名称)
8)os.system()——执行shell命令
如:
myname =os.path.abspath(os.path.join(os.path.dirname(__file__),'zhuhuan'))
myname2=os.path.abspath(os.path.join(os.path.dirname(__file__),'zhuhuan1'))
os.system('cp -Rf %s %s' % (myname, myname2 + '/moxian_m2')) #这行命令可以直接在linux路径下执行,相对于liunx命令:cp -Rf /opt/home/jenkins/zhuhuan /opt/home/jenkins/zhuhuan1/moxian_m2(复制的目录必须存在)

9)os.path.isdir(path)——判断路径是否存且为文件夹,是则返回true,否则返回false
#isdir
myisdir=os.path.isdir('E:\pythonDoc\jenkinsPac')
ifmyisdir:
print'路径存在:',myisdir
else:
print'路径不存在:',myisdir
10)os.path.exists('path')------判断参数所指的文件或文件夹路径是否存在,是则返回true,否则返回false
11)os.path.isfile(path)——判断路径是否存在且为文件,是则返回true,否则返回false
12)os.getcwd()------获取当前目录(包含分隔符)
13)os.chdir()------改变当前目录(临时性改变)
14)os.mkdirs('path')------创建文件夹
15)os.getsize('path')------返回path参数中的文件字节数
16)os.unlink('path')------删除path处的文件(永久删除,不会缓存在回收站)
17)os.rmdir('path')------删除path处的空文件夹。文件夹下必须为空,且文件夹必须存在(永久删除,不会缓存在回收站)
18)os.listdir('path)------方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 '.' 和'..' 即使它在文件夹中
19)os.walk()------遍历目录树。每次迭代依次传递三个值(值为:当前目录,目录下的文件夹,目录下的文件)


练习代码:
#-*- coding:utf-8 -*-
importsys
reload(sys)
sys.setdefaultencoding('utf-8')
importos
# 路径用\\(双斜杠)是因为单斜杠与某些字符组合会被识别为转义字符
importshelve
frommytest.compilewarsimportmyCats

#返回包含分隔符的字符串路径
printos.path.join('usr','bin','spam')
myFiles=['accounts.txt','details.csv','invite.docx']
forfileNameinmyFiles:
print'返回包含分隔符的字符串路径join:',os.path.join('c:\\users\\asweigart\\'),fileName

#获取当前工作目录
print'获取当前路径getcwd:',os.getcwd()

#改变路径
myOs1=os.chdir(os.getcwd())
# myOs2=os.chdir('c:ddd') #传递不存在的路径会报错
print'改变路径:',myOs1

#新建文件夹
# os.makedirs('c:\\zhu\\huanhuan')

printos.chdir('c:\\zhu..')
printos.chdir('c:\\zhucc\\..')

# 相对路径转换为绝对路径
printos.path.abspath('.')
print'相对路径转换绝对路径abspath:',os.path.abspath('.\\Scripts')

#参数是绝对路径,就返回True。参数是相对路径返回False
printos.path.isabs('.\\Scripts')
print'参数是绝对路径,就返回True,否则返回false(isabs):',os.path.isabs(os.path.abspath('.'))

#参数是绝对路径,返回相对路径
printos.path.relpath('c:\\windows','c:\\')
print'参数是绝对路径,返回相对路径relpath:',os.path.relpath('c:\\windows','c:\\System32\\Boot')

#获取和分割
path1='C:\Windows\System32\Boot'
print'获取路径基本名称1 basename:',os.path.basename(path1)
path='C:\Windows\System32\Boot\winload.exe'
print'获取路径基本名称 basename:',os.path.basename(path)
print'获取路径目录名称 dirname:',os.path.dirname(path1)
print'同时获取基本名称和目录名称 split:',os.path.split(path1)
print'以数组形式返回每个文件的字符串sep:',path.split(os.path.sep)

print'返回字节数 getsize:',os.path.getsize('C:\Windows\System32\calc.exe')
# print '返回路径下所有文件夹名和文件名:',os.listdir('C:\Windows\System32')

#获取路径下所有文件地址字节总和
totalSize=0
forallFileinos.listdir('C:\Windows\System32'):
totalSize=totalSize+os.path.getsize(os.path.join('C:\Windows\System32',allFile))
# print os.path.join('C:\Windows\System32', allFile)
print'循环gesize:',totalSize

#检查路径是否有效
print'文件或者文件夹是否存在:',os.path.exists('c:\Windows')
print'文件是否存在:',os.path.isfile('C:\Windows\System32\calc.exe')
print'文件是否存在:',os.path.isfile('C:\Windows\System32')#false
print'文件夹是否存在:',os.path.isdir('c:\Windows')
print'文件夹是否存在:',os.path.isdir('c:\Windows\System32\calc.exe')#false
print'查看移动硬盘是否存在:',os.path.exists('G:\\')

#文件读写过程
printos.getcwd()
myFiles1=open('E:\\pythonDoc\\jenkinsPac\\mytest\\compilewars\\test.txt')#打开文件
files1=myFiles1.read()#读取文件
files2=myFiles1.readlines()
printfiles1
printfiles2
myFiles1.close()
myFiles2=open('E:\\pythonDoc\\jenkinsPac\\mytest\\compilewars\\test.txt','w')#写入文件的特殊打开文件方式
writeFile1=myFiles2.write('hello world! and you konw\n')#完全覆盖式的写入
myFiles2.close()#写入文件后需先close,否则会报错
myFiles3=open('E:\\pythonDoc\\jenkinsPac\\mytest\\compilewars\\test.txt')#打开文件
files3=myFiles3.read()#读取文件
printfiles3

# #TODO: 遍历目录树
# for folderName,subfolders,filesnames in os.walk('d:\\delicious'): #函数返回三个值:当前文件路径、当前目录下所有文件夹名称、当前目录下所有文件夹下的文件名称
# print ('The current folder is' + folderName )
# for subfolder in subfolders:
# print ('SUBFLODER OF '+folderName +':'+subfolder)
# for filesname in filesnames:
# print ('FILE INSIDE ' + folderName +':'+filesname)
# print (' ')
#
<

TAG:

 

评分:0

我来说两句

Open Toolbar