@zhangyu756897669
2017-09-13T15:27:12.000000Z
字数 3573
阅读 647
python官方文档
变量是在程序运行时存储数据的一种很好的方法,但如果您的数据在程序完成后仍然保留,则需要将其保存到文件中。您可以将文件的内容视为单个字符串值,大小可能为千兆字节。在本章中,您将学习如何使用Python在硬盘驱动器上创建,读取和保存文件。
一个文件有两个关键属性:一个文件名(通常写成一个字)和一个路径。路径指定文件在计算机上的位置。例如,我的Windows 7笔记本电脑上有一个文件,文件名为project.docx C:\Users\asweigart\Documents.
最后de docx的文件名部分称为文件扩展名,并告诉您一个文件的类型。 project.docx
是一个 Word文档,Users, asweigart, and Documents 为全部引用文件夹(也称为目录) 文件夹可以包含文件和其他文件夹。例如,project.docx位于Documents文件夹中,该文件夹位于Users文件夹内的asweigart文件夹中
C:\
路径的一部分是根文件夹,其中包含所有其他文件夹。
import os
os.path.join('usr', 'bin', 'spam')
<div class="md-section-divider"></div>
'usr\bin\spam'
os.path.join('usr','bin','spam')
返回'usr \\ bin \\ spam'
(请注意,反斜杠加倍,因为每个反斜杠需要由另一个反斜杠字符进行转义。)如果我在OS X或Linux上调用此函数,那么该字符串将是“usr / bin / spam”
。
myFiles = ['accounts.txt', 'details.csv', 'invite.docx']
for filename in myFiles:
print(os.path.join('C:\\Users\\asweigart', filename))
<div class="md-section-divider"></div>
C:\Users\asweigart\accounts.txt
C:\Users\asweigart\details.csv
C:\Users\asweigart\invite.docx
import os
<div class="md-section-divider"></div>
os.getcwd()
'C:\Users\zhangyu'
os.chdir('C:\\Windows\\System32')
os.getcwd()
'C:\Windows\System32'
如果您尝试更改为不存在的目录,Python将显示错误。
有两种方法来指定文件路径。
* 绝对路径,始终以根文件夹开头
* 相对路径,相对于程序的当前工作目录
您的程序可以使用os.makedirs()函数创建新文件夹(目录)。
import os
os.makedirs('C:\\delicious\\walnut\\waffles')
这不仅会创建C:\ delicious文件夹,还会在C:\ delicious中的一个核心文件夹以及C:\ delicious \ walnut中的一个waffles文件夹。也就是说,os.makedirs()将创建任何必要的中间文件夹,以确保完整的路径存在。
os.path模块包含与文件名和文件路径相关的许多有用的功能。例如,您已经使用os.path.join()来构建路径,可以在任何操作系统上运行。 由于os.path是os模块中的一个模块,所以您可以通过简单的运行import os来导入它。每当您的程序需要处理文件,文件夹或文件路径时,可以参考本节中的简短示例。os.path模块的完整文档位于Python网站上 http://docs.python.org/3/library/os.path.html.
注意
本部分中的大多数示例将需要使用os模块,因此请记住在您编写的任何脚本的开始处,以及任何重新启动IDLE的时候都将其导入。
os.path模块提供返回相对路径的绝对路径并检查给定路径是否为绝对路径的函数。
os.path.abspath('.')
'C:\Windows\System32'
os.path.abspath('.\\Scripts')
'C:\Windows\System32\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'
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.dirname(calcFilePath), os.path.basename(calcFilePath))
('C:\Windows\System32', 'calc.exe')
但是如果您需要这两个值,os.path.split()是一个很好的快捷方式。
另外请注意,os.path.split()不会获取文件路径并返回每个文件夹的字符串列表。为此,请使用split()字符串方法并在os.sep中的字符串上进行拆分。从前面回想一下,os.sep变量设置为运行程序的计算机的正确文件夹分离斜线。
例如:
calcFilePath.split(os.path.sep)
['C:', 'Windows', 'System32', 'calc.exe']