文件与文件路径
1)Windows上的倒斜杠和os x及Linux上的正斜杠
在Windows上,写路径时使用倒斜杠作为分隔符
os x和Linux上,使用正斜杠作为分隔符
2)当前工作目录
当前工作目录--------cwd(current working directory)
os.gecwd()---------获得当前工作目录的字符串
os.chdir()---------改变当前工作目录
3)绝对路径与相对路径
绝对路径:从根目录开始
相对路径:相对于程序的当前目录
点(.)文件夹:当前目录
点点(..)文件夹:父文件夹
如下图:bacon文件夹为当前工作目录
思考:
若当前工作目录为C:\bacon\spam.txt,
则C:\spam.txt的相对路径就表示为..\..\spam.txt
4)使用os.makedirs()创建新文件夹
5)os.path模块
os.path模块包含了许多与文件名和文件路径相关的有用函数。
6)处理绝对路径和相对路径
os.path 模块提供了一些函数,返回一个相对路径的绝对路径,以及检查给定的路径是否为绝对路径。
调用os.path.abspath(path)将返回参数的绝对路径的字符串。这是将相对路径转换为绝对路径的简便方法。
调用os.path.isabs(path),如果参数是一个绝对路径,就返回True,如果参数是一个相对路径,就返回False。
调用os.path.relpath(path, start)将返回从start 路径到path 的相对路径的字符串。如果没有提供start,就使用当前工作目录作为开始路径。
调用os.path.split(path),将返回一个路径的目录名称和基本名称
7)查看文件大小和文件夹内容
调用os.path.getsize(path)将返回path 参数中文件的字节数。
调用os.listdir(path)将返回文件名字符串的列表,包含path 参数中的每个文件(请注意,这个函数在os模块中,而不是os.path)。
8)检查路径有效性
如果path参数所指的文件或文件夹存在,调用os.path.exists(path)将会返回True,否则返回FALSE
如果path参数参数存在,且是一个文件,调用os.path.isfile(path)将会返回True,否则返回FALSE
如果path参数参数存在,且是一个文件夹,调用os.path.isdir(path)将会返回True,否则返回FALSE
文件读写过程
主要涉及纯文本文件
在Python 中,读写文件有3 个步骤:
1)调用open()函数,返回一个File 对象。
传入open方法的文件路径可以是绝对路径,也可以是相对路径
demofile = open('F:\\delicious\\demo.txt')
demofile = open('F:\\delicious\\demo.txt','r')
两种形式等价,为“读模式”,以读模式打开,不能对文件内容做写入和修改操作
demofile = open('F:\\delicious\\demo.txt','w')
这种模式以“写模式”打开,写模式将覆盖原有文件
demofile = open('F:\\delicious\\demo.txt','a')
这种模式以“添加模式”打开,添加模式在已有文件末尾添加文本
2)调用File 对象的read()或write()方法。
读取文件内容,调用file对象的read()
有两种方法;read()按字符读取,将整个文件读取为一个字符串值
helloContent = helloFile.read() >>> helloContent 'Hello world!'
readline()按行读取,将整个文件通过换行符读取为一个字符串列表
sonnetFile.readlines()
写入文件,调用file对象的write方法
有两种模式:写模式——直接复写文件
demofile = open('F:\\delicious\\demo.txt','w')
demofile.write('Hello world!\n')
添加模式——在文件末尾添加文本
demofile = open('F:\\delicious\\demo.txt','a')
demofile.write('Bacon is not a vegetable.')
PS:
write()方法不会像print()函数那样,在字符串的末尾自动添加换行字符。必须自己添加该字符。
如果传递给open()的文件名不存在,写模式和添加模式都会创建一个新的空文件。在读取或写入文件后,调用close()方法,然后才能再次打开该文件。
3)调用File 对象的close()方法,关闭该文件。
baconFile.close()
3.用shelve 模块保存变量
1)shelve类似于一个key-value数据库,可以很方便的用来保存Python的内存对象,其内部使用pickle来序列化数据,简单来说,使用者可以将一个列表、字典、或者用户自定义的类实例保存到shelve中,下次需要用的时候直接取出来,就是一个Python内存对象,不需要像传统数据库一样,先取出数据,然后用这些数据重新构造一遍所需要的对象。
2)调用函数shelve.open()并传入一个文件名,然后将返回的值保存在一个变量中。可以对这个变量的shelf 值进行修改,就像它是一个字典一样。当你完成时,在这个值上调用close()。
3)在Windows 上运行前面的代码,你会看到在当前工作目录下有3 个新文件:mydata.bak、mydata.dat 和mydata.dir
4)就像字典一样,shelf 值有keys()和values()方法,返回shelf 中键和值的类似列表的值。因为这些方法返回类似列表的值,而不是真正的列表,所以应该将它们传递给list()函数,取得列表的形式。
4.用pprint.pformat()函数保存变量