【Class 34】《Python编程快速上手》 查缺补漏五 第八章 读写文件

  1. Windows 反斜杠( \ ), OS X和Linux 上位正斜杠( / )

  2. os.getcwd() :获得当前工作目录

  3. os.chdir() :切换工作目录

  4. os.makedirs() :创建新文件夹

  5. os.path 模块包含了许多与文件名和文件路径相关的有用函数。

  6. 处理绝对路径和相对路径
    os.path.abspath( path )   将返回参数得绝对路径得字符串,这是将相对路径转换位绝对路径得简便方法。
    os.path.isabs( path )  判断path 是否是一个绝对路径,如果是就返回True,否则返回False
    os.path.relpath( path, start )  将返回从start 路径到 path 得相对路径字符串。如果没有提供start,则默认当前工作目录位开始路径。
    os.path.dirname( filepath )和 os.path.basename( filepath ), 分别返回文件目录名称 和 文件名
    os.path.join() 连接文件夹名称和当前的文件名

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

  8. os.listdir( path ) 返回文件名字符串的列表,包含 path 参数中的每个文件

>>> os.listdir('.')
['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'man', 'NEWS.txt', 'python.exe', 
'python3.dll', 'python37.dll', 'pythonw.exe', 'Scripts', 'tcl', 'Tools', 'vcruntime140.dll']
>>> 

统计当前目录下所有文件的大小:
>>> for filename in os.listdir('.'):
	totalSize += os.path.getsize(os.path.join(".",filename))

>>> print(totalSize)
4920314
  1. 检查路径有效性
    os.path.exists(path) : 检查文件或者目录是否存在,存在则返回True,否则False
    os.path.isfile(path) :判断path是否是一个文件,是就返回True,否则False
    os.path.isdir(path) :判断path是否是文件夹,是就返回True,否则False

  2. 文件读写过程
    File_tmp = open( path )  打开文件,返回一个File 对象
    File_tmp.readline()  返回一个字符串,字符串中就是文本的内容。
    File_tmp.readline()  返回一个字符串列表,每个字符串是文本中的每一行。

    File_tmp = open( path , ‘w’ )   以写模式打开文件,返回一个File 对象, w: 写 a: 增加

>>> baconFile = open('bacon.txt', 'w')
>>> baconFile.write('Hello world!\n')
13
>>> baconFile.close()
>>> baconFile = open('bacon.txt', 'a')
>>> baconFile.write('Bacon is not a vegetable.')
25
>>> baconFile.close()
>>> baconFile = open('bacon.txt')
>>> content = baconFile.read()
>>> baconFile.close()
>>> print(content)
Hello world!
Bacon is not a vegetable

10. shelve 模块保存变量
利用 shelve 模块,你可以将 Python 程序中的变量保存到二进制的 shelf 文件中。这样,程序就可以从硬盘中恢复变量的数据。

实例:

>>> import shelve
>>> shelfFile = shelve.open('mydata')
>>> cats = ['Zophie', 'Pooka', 'Simon']
>>> shelfFile['cats'] = cats
>>> shelfFile.close()

在Windows上会看到在当前工作目录下有 3 个新文件:mydata.bak、mydata.dat 和 mydata.dir。
在 OS X 上,只会创建一个 mydata.db 文件。
这些二进制文件包含了存储在 shelf 中的数据。可以恢复之前保存在 shefFile 中的变量。

>>> shelfFile = shelve.open('mydata')
>>> type(shelfFile)
<class 'shelve.DbfilenameShelf'>
>>> shelfFile['cats']
['Zophie', 'Pooka', 'Simon']
>>> shelfFile.close()

11. 用 pprint.pformat() 函数保存变量成文件,可以做模块导入

假定你有一个字典,保存在一个变量中,你希望保存这个变量和它的内容,以便将来使用。
pprint.pformat()函数将提供一个字符串,你可以将它写入.py 文件。
该文件将成为你自己的模块,如果你需要使用存储在其中的变量,就可以导入它。

实例:

>>> import pprint
>>> cats = [{'name': 'Zophie', 'desc': 'chubby'}, {'name': 'Pooka', 'desc': 'fluffy'}]
>>> pprint.pformat(cats)
"[{'desc': 'chubby', 'name': 'Zophie'}, {'desc': 'fluffy', 'name': 'Pooka'}]"

# 将变量和内容,保存在 myCats.py 中
>>> fileObj = open('myCats.py', 'w')
>>> fileObj.write('cats = ' + pprint.pformat(cats) + '\n')
83
>>> fileObj.close()

# 后续需要用时,可以导入myCats来使用
>>> import myCats
>>> myCats.cats
[{'name': 'Zophie', 'desc': 'chubby'}, {'name': 'Pooka', 'desc': 'fluffy'}]
>>> myCats.cats[0]
{'name': 'Zophie', 'desc': 'chubby'}
>>> myCats.cats[0]['name']
'Zophie

创建一个.py 文件(而不是利用 shelve 模块保存变量)的好处在于,因为它是一个文本文件,所以任何人都可以用一个简单的文本编辑器读取和修改该文件的内容。
但是,对于大多数应用,利用 shelve 模块来保存数据,是将变量保存到文件的最佳方式。
只有基本数据类型,诸如整型、浮点型、字符串、列表和字典,可以作为简单文本写入一个文件。例如,File 对象就不能够编码为文本。

你可能感兴趣的:(Python总结)