第8章利用python读写文件

眉间皱痕 提交于 2020-01-20 02:25:27

文件名与文件路径

(1)文件名:包括文件名与扩展名。如hello.py, hello是文件名,py为扩展名,指出的文件的类型。
(2)根路径,根文件夹,包含了所有其他文件夹,’如:C:\

os.path.join( ) 函数

(1) 将单个文件和路径上的文件夹传递给os.path.join( ) 函数,会返回一个文件路径的字符串,包含正确的路径分隔符。注意反斜杠“\”有两个,一个为路径分隔符,一个为转义字符。

>>> import os
>>> os.path.join('user','bin','spam')
'user\\bin\\spam'

(2)利用os.path.join( ) 函数创建文件名称的字符串

>>> MyFiles=['account.txt','detail.csv','invite.docx']
>>> for filename in MyFiles:
...     print(os.path.join('C:\\users\\asweigart',filename))
C:\users\asweigart\account.txt
C:\users\asweigart\detail.csv
C:\users\asweigart\invite.docx

当前工作目录

利用os.getcwd()函数查看当前目录(相当于linux中的pwd),利用os.chdir()函数可以切换目录、

>>> import os
>>> os.getcwd()
'D:\\Backup\\Downloads\\cmder'
>>> os.chdir('C:\\Users\\Administrator\\Desktop')
>>> os.getcwd()
'C:\\Users\\Administrator\\Desktop'
>>>

如果 要更改的当前目录不存在,python会报错。

>>> os.chdir('C:\\Users\\Administrator\\Desk')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'C:\\Users\\Administrator\\Desk'
>>>

绝对路径和相对路径

(1)绝对路径:总是从根文件夹开始。
(2)相对路径:相对于程序的当前工作目录。
在这里插入图片描述

利用os.makedirs( )创建新文件夹(新目录)

中间文件夹若不存在,os.makedirs( )将创建所有必要的中间文件夹Users、Administrator、Desktop。

>>> import os
>>> os.makedirs('C:\\Users\\Administrator\\Desktop\\testdir')

处理绝对路径和相对路径

(1)调用os.path.abspath(path)将返回参数的绝对路径。
(2)调用os.path.isabs(path),如果参数是绝对路径,返回Ture,若参数为相对路径,则返回False.

>>> os.getcwd()
'C:\\Users\\Administrator\\Desktop'
>>> os.path.abspath('.\\testdir')
'C:\\Users\\Administrator\\Desktop\\testdir'
>>> os.path.isabs('.')
False
>>> os.path.isabs('C:\\Users\\Administrator\\Desktop\\testdir')
True
>>> os.path.isabs(os.path.abspath('.'))
True
>>>

(3)调用os.path.relpath(path,start)将返回从start路径到path的相对路径。若没有提供start,则使用当前工作目录作为开始路径。

>>> os.path.relpath('C:\\Users','C:\\')
'Users'
>>> os.path.relpath('C:\\Users\\Administrator','C:\\')
'Users\\Administrator'
>>> os.path.relpath('C:\\Users','C:\\Desktop\\testdir')
'..\\..\\Users'
>>> os.getcwd()
'C:\\Users\\Administrator\\Desktop'
>>>

os.path.dirname()函数

调用os.path.dirname(path)将返回一个字符串,它包含path参数中最后一个斜杠之前的所有内容。
调用os.path.basename(path)将返回一个字符串,它包含path参数中最后一个斜杠之后的所有内容。

>>> import os
>>> path='C:\\Users\\Administrator\\Desktop\\Image 50.png'
>>> os.path.dirname(path)
'C:\\Users\\Administrator\\Desktop'
>>> os.path.basename(path)
'Image 50.png'

调用os.path.split(),将返回被分割路径的目录名称和基本名称组成的元组。
`也可以调用os.path.dirname( )和os.path.basename( ),

>>> os.path.split(path)
('C:\\Users\\Administrator\\Desktop', 'Image 50.png')
>>>

也可以调用os.path.dirname( )和os.path.basename( ),然后将它们的返回值放在一个元组里。但是os.path.split( )显然更快捷。

>>> (os.path.dirname(path),os.path.basename(path))
('C:\\Users\\Administrator\\Desktop', 'Image 50.png')
>>>

若要接受一个文件路径并返回每个中间文件夹的列表。则要使用split()字符串方法,并根据os.path.sep中的字符串进行分割。

>>> path='C:\\Users\\Administrator\\Desktop\\Image 50.png'
>>> path.split(os.path.sep)
['C:', 'Users', 'Administrator', 'Desktop', 'Image 50.png']
>>> 'C:\\Users\\Administrator\\Desktop\\Image 50.png'.split(os.path.sep)
['C:', 'Users', 'Administrator', 'Desktop', 'Image 50.png']

查看文件夹大小和文件夹内容

(1)调用os.path.getsize(path)将返回path参数中文件的字节数。

>>> path
'C:\\Users\\Administrator\\Desktop\\Image 50.png'    #注:49863是Image 50.png的大小。
>>> os.path.getsize(path)
49863

查看’C:\Users\Administrator\Desktop‘这个目录下所有文件的总字节数,可以同时使用os.path.getsize( )和os.listdir( )
在这里插入图片描述

(2)调用os.listdir(path)将返回文件名字符串的列表,包含path参数中的每个文件。(相当于linux中的ls 命令)

>>> os.listdir('C:\\Users\\Administrator\\Desktop\\testdir')
['test1.txt', 'test2.doc', 'test3.xls']

查看路径有效性

(1)如果path参数所指的文件或文件夹存在,调用os.path.exists(path)将返回True,否则返回False
(2)如果path参数存在,并且是一个文件,调用os.path.isfile(path)将返回True,否则返回False.
(3)如果path参数存在,并且是一个文件夹,调用os.path.isdir(path)将返回True,否则返回False.

>>> os.path.exists('C:\\Users')
True
>>> os.path.exists('C:\\U')
False
>>> os.path.isdir('C:\\Users')
True
>>> os.path.isfile('C:\\Users')
False
>>> os.path.isfile('C:\\Users\\Administrator\\Desktop\\Image 50.png')
True
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!