文件与文件路径
如果需要创建文件名称的字符串,os.path.join()函数就很有用。将单个文件和路径上的文件夹名称的字符串传递给它,os.path.join()就会返回一个文件路径的字符串,包含正确的路径分隔符。
>>> import os
>>> os.path.join('usr', 'bin', 'spam')
'usr\\bin\\spam'
>>> myFiles = ['accounts.txt', 'details.csv', 'invite.docx']
>>> for filename in myFiles:
print(os.path.join('C:\\Users\\asweigart', filename))
C:\Users\asweigart\accounts.txt
C:\Users\asweigart\details.csv
C:\Users\asweigart\invite.docx
创建新文件夹与获取当前工作目录
可以用os.makedirs()函数来创建新文件夹。
利用os.getcwd()函数可以取得当前工作路径的字符串,并可以利用os.chdir()改变它。
>>> import os
>>> os.getcwd()
'C:\\Python34'
>>> os.chdir('C:\\Windows\\System32')
>>> os.getcwd()
'C:\\Windows\\System32'
绝对路径和相对路径
os.path 模块提供了一些函数,返回一个相对路径的绝对路径,以及检查给定的
路径是否为绝对路径。
- 调用os.path.abspath(path)将返回参数的绝对路径的字符串。这是将相对路径转
换为绝对路径的简便方法。 - 调用os.path.isabs(path),如果参数是一个绝对路径,就返回True,如果参数是
一个相对路径,就返回False。 - 调用os.path.relpath(path, start)将返回从start 路径到path 的相对路径的字符串。
如果没有提供start,就使用当前工作目录作为开始路径。
>>> os.path.abspath('.')
'C:\\Python34'
>>> os.path.abspath('.\\Scripts')
'C:\\Python34\\Scripts'
>>> os.path.isabs('.')
False
>>> os.path.isabs(os.path.abspath('.'))
True
>>> os.path.relpath('C:\\Windows', 'C:\\')
'Windows'
>>> os.path.relpath('C:\\Windows', 'C:\\spam\\eggs')
'..\\..\\Windows'
>>> os.getcwd()
'C:\\Python34'
调用os.path.dirname(path)将返回一个字符串,它包含path 参数中最后一个斜杠之前的所有内容。调用os.path.basename(path)将返回一个字符串,它包含path 参数中最后一个斜杠之后的所有内容。如果同时需要一个路径的目录名称和基本名称,就可以调用os.path.split(),获得这两个字符串的元组。
>>> path = 'C:\\Windows\\System32\\calc.exe'
>>> os.path.basename(path)
'calc.exe'
>>> os.path.dirname(path)
'C:\\Windows\\System32'
>>> calcFilePath = 'C:\\Windows\\System32\\calc.exe'
>>> os.path.split(calcFilePath)
('C:\\Windows\\System32', 'calc.exe')
查看文件大小和文件夹内容
os.path.getsize(path)返回path 参数中文件的字节数。
os.listdir(path)将返回文件名字符串的列表,包含path 参数中的每个文件。
>>> os.path.getsize('C:\\Windows\\System32\\calc.exe')
776192
>>> os.listdir('C:\\Windows\\System32')
['0409', '12520437.cpx', '12520850.cpx', '5U877.ax', 'aaclient.dll','xwtpdui.dll', 'xwtpw32.dll', 'zh-CN', 'zh-HK', 'zh-TW', 'zipfldr.dll']
文件读写
在Python 中,读写文件有3 个步骤:
- 调用open()函数,返回一个File 对象。
- 调用File 对象的read()或write()方法。
- 调用File 对象的close()方法,关闭该文件。
read()方法返回文件中的所有内容。
readlines()方法从文件取得一个字符串的列表,列表中的每个字符串就是文本中的每一行。
如果打开文件时用读模式,就不能写入文件。需要以“写入纯文本模式”或“添加纯文本模式”打开文件,简称为“写模式”和“添加模式”。
将’w’作为第二个参数传递给open(),以写模式打开该文件。写模式将覆写原有的文件。
将’a’作为第二个参数传递给open(),以添加模式打开该文件。添加模式将在已有文件的末尾添加文本。