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

提交评论

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值