2018/9/06--Python学习笔记(二)-- 读写文件

os.path.join()

如果将单个文件和路径上的文件夹名称的字符串传递给它,os.path.join()函数会返回一个文件路径的字符串

import os

print(os.path.join('user','bin','spam'))

#  user\\bin\\spam

print(os.path.join('D:\\hh', 'haha.txt'))

#   D:\\hh\\haha.txt

当前工作目录

利用 os.getcwd()函数,可以取得当前工作路径的字符串,并可以利用 os.chdir()改变它。

import os

print(os.getcwd())

#   C:\User\*****\Desktop

os.chdir('D:\\hh')
print(os.getcwd())

#   D:\hh

如果更改的当前工作目录不存在,Python就会显示一个错误。

相对路径和绝对路径

有两种方法指定一个文件路径。

  • “绝对路径”,总是从根文件夹开始。
  • “相对路径”,它相对于程序的当前工作目录。

还有点(.)和点点(..)文件夹。它们不是真正的文件夹,而是可以在路径中使用的特殊名称。单个的句点(“点”)用作文件夹目名称时,是“这个目录”的缩写。两个句点(“点点”)意思是父文件夹。

os.makedirs()

程序可以用 os.makedirs()函数创建新文件夹(目录)。

import os

os.makedirs('D:\\haha\\xixi')

#   表示在D盘创建了haha文件夹,并在其中创建了xixi文件夹

处理绝对路径和相对路径

  • 调用 os.path.abspath(path)将返回参数的绝对路径的字符串。这是将相对路径转换为绝对路径的简便方法。
  • 调用 os.path.isabs(path),如果参数是一个绝对路径,就返回 True,如果参数是一个相对路径,就返回 False。
  • 调用 os.path.relpath(path, start)将返回从 start 路径到 path 的相对路径的字符串。如果没有提供 start,就使用当前工作目录作为开始路径。
import os

print(os.path.abspath('.'))

#   C:\User\*****\Desktop

print(os.path.abspath('.\\Python'))

#   C:\User\*****\Desktop\Python

print(os.path.isabs('.'))

#   False

print(os.path.isabs(os.path.abspath('.')))

#   True

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

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

import os

path = 'D:\\Pytest\\test1\\filetest.py'

print(os.path.basename(path))

#   filetest.py

print(os.path.dirname(path))

#   D:\Pytest\test1

如果同时需要一个路径的目录名称和基本名称,就可以调用 os.path.split(),获得这两个字符串的元组.

import os

pyFilePath = 'D:\\Pytest\\test1\\filetest.py'

print(os.path.split(pyFilePath))

#   ('D:\\Pytest\\test1', 'filetest.py')

查看文件大小和内容

  • 调用 os.path.getsize(path)将返回 path 参数中文件的字节数。
  • 调用 os.listdir(path)将返回文件名字符串的列表,包含 path 参数中的每个文件
import os

filePath = 'D:\\Pytest\\test1\\filetest.py'

Path = 'D:\\Pytest\\test1'

print(os.path.getsize(filePath))

# (输出文件大小,字节)

print(os.listdir(Path))

#(输出test1文件夹中的所有文件)

检查路径有效性

  • 如果 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 对象
  2. 调用 File 对象的 read()或 write()方法
  3. 调用 File 对象的 close()方法,关闭该文件

要用 open()函数打开一个文件,就要向它传递一个字符串路径,表明希望打开的文件。这既可以是绝对路径,也可以是相对路径。open()函数返回一个 File 对象。

这些命令都将以读取纯文本文件的模式打开文件,或简称为“读模式”。当文件以读模式打开时,Python 只让你从文件中读取数据,你不能以任何方式写入或修改它。在 Python 中打开文件时,读模式是默认的模式。但如果你不希望依赖于 Python 的默认值,也可以明确指明该模式,向 open()传入字符串'r',作为第二个参数。所以open('/Users/asweigart/hello.txt', 'r')和 open('/Users/asweigart/hello.txt')做的事情一样。

调用 open()将返回一个 File 对象。File 对象代表计算机中的一个文件,它只是Python 中另一种类型的值,就像你已熟悉的列表和字典。在前面的例子中,你将 File对象保存在 helloFile 变量中。现在,当你需要读取或写入该文件,就可以调用helloFile 变量中的 File 对象的方法。

如果你希望将整个文件的内容读取为一个字符串值,就使用 File 对象的 read()方法。让我们继续使用保存在helloFile 中的 hello.txt File 对象。

2018/9/06--Python学习笔记(二)-- 读写文件_第1张图片

import os

Path = 'D:\\haha.txt'

helloFile = open(Path)
helloContent = helloFile.read()

print(helloContent)

# Hello World!

可以使用 readlines()方法,从该文件取得一个字符串的列表。列表中的每个字符串就是文本中的每一行。

2018/9/06--Python学习笔记(二)-- 读写文件_第2张图片

import os

Path = 'D:\\haha.txt'

helloFile = open(Path)

print(helloFile.readlines())

# Hello World!\nThanks!\nHaHa。

       Python 允许你将内容写入文件,方式与 print()函数将字符串“写”到屏幕上类似。但是,如果打开文件时用读模式,就不能写入文件。你需要以“写入纯文本模式”或“添加纯文本模式”打开该文件,或简称为“写模式”和“添加模式”。

        写模式将覆写原有的文件,从头开始,就像你用一个新值覆写一个变量的值。将'w'作为第二个参数传递给 open(),以写模式打开该文件。不同的是,添加模式将在已有文件的末尾添加文本。你可以认为这类似向一个变量中的列表添加内容,而不是完全覆写该变量。将'a'作为第二个参数传递给 open(),以添加模式打开该文件。

        如果传递给 open()的文件名不存在,写模式和添加模式都会创建一个新的空文件。在读取或写入文件后,调用 close()方法,然后才能再次打开该文件。

import os

baconFile = open('haha.txt', 'w')
baconFile.write('Hello world!\n')
baconFile.close()

#   创建haha.txt文件,并写入Hello world!

baconFile = open('haha.txt', 'a')
baconFile.write('Thanks!\n')
baconFile.close()

#   在haha.txt文件中添加Thanks!

baconFile = open('haha.txt')
content = baconFile.read()
baconFile.close()
prtint(content)

#   Hello world!
#   Thanks!

write()方法不会像 print()函数那样,在字符串的末尾自动添加换行字符。必须自己添加该字符。

小结

os.path.join(),拼接路径

os.getcwd(),取得当前工作路径的字符串

os.chdir(),改变当前工作路径

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

os.path.abspath(path),返回参数的绝对路径的字符串

os.path.isabs(path),参数是一个绝对路径返回 True,参数是一个相对路径返回 False

os.path.relpath(path, start),返回从 start 路径到 path 的相对路径的字符串。如果没有提供 start,就使用当前工作目录作为开始路径。

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

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

os.path.split(),返回dirname和basename这两个字符串的元组

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

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

os.path.exists(path),判断文件或文件夹是否存在,返回True或False

os.path.isfile(path),判断文件是否存在,返回True或False

os.path.isdir(path),判断文件夹是否存在,返回True或False

open(),返回一个File对象

read(),返回内容的字符串

readlines(),从该文件取得一个字符串的列表。列表中的每个字符串就是文本中的每一行

你可能感兴趣的:(Python)