python读写找不到路径_os模块--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:

我来说两句

显示全部

loveliness.gif

handshake.gif

victory.gif

funk.gif

time.gif

kiss.gif

call.gif

hug.gif

lol.gif

cry.gif

mad.gif

sweat.gif

titter.gif

shy.gif

tongue.gif

shocked.gif

huffy.gif

biggrin.gif

sad.gif

smile.gif

内容

昵称

验证

batch.seccode.php

提交评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值