Python文件及目录处理的方法

下面先来介绍python目录处理相关方法。

一、目录操作

1. 获取当前代码路径

1

2

3

4

5

6

7

8

9

test_folder.py

importos

importsys

print(__file__)

print(sys.argv[0])

print(os.path.realpath(__file__))

print(os.path.abspath(sys.argv[0]))

Out:

D:/ProgramWorkspace/PythonNotes/03-File-Handling/test_folder.py
D:/ProgramWorkspace/PythonNotes/03-File-Handling/test_folder.py
D:\ProgramWorkspace\PythonNotes\03-File-Handling\test_folder.py
D:\ProgramWorkspace\PythonNotes\03-File-Handling\test_folder.py

2. 获取当前文件__file__的所在目录

1

2

3

4

print(os.getcwd())

print(os.path.dirname(os.path.realpath(__file__)))

print(os.path.split(os.path.realpath(__file__))[0])

path=os.path.dirname(os.path.realpath(__file__))

Out:

D:\ProgramWorkspace\PythonNotes\03-File-Handling
D:\ProgramWorkspace\PythonNotes\03-File-Handling
D:\ProgramWorkspace\PythonNotes\03-File-Handling

3. 获取当前文件名名称

1

2

print(os.path.basename(sys.argv[0]))# 当前文件名名称

print(os.path.basename(__file__))

Out:

test_folder.py
test_folder.py

4. 拼接路径

1

2

3

4

path=os.path.dirname(os.path.realpath(__file__))

filename=os.path.basename(__file__)

abspath=os.path.join(path, filename)

print(abspath)

Out:

D:\ProgramWorkspace\PythonNotes\03-File-Handling\test_folder.py

5. 创建目录

判断目录是否存在:

1

os.path.exists(path)

创建目录:

1

2

3

ifnotos.path.exists(path):

print(f"创建文件夹: {path}")

os.makedirs(path)

二、文件操作

1. 创建文本文件

1

2

3

4

5

text="Hello World!"

newfilepath=os.path.join(path,"newfile.txt")

file=open(newfilepath,'w')

file.write(text)# 写入内容信息

file.close()

2. 判断文件是否存在

1

2

3

print(os.path.isfile(path))

print(os.path.isfile(newfilepath))

print(os.path.exists(newfilepath))

Out:

False
True
True

os.path.isfile用于判断是否为文件且是否存在,os.path.exists 也可以用于判断文件是否存在,但还是建议使用os.path.isfile 判断文件,os.path.exists判断目录是否存在。比如,某个文件为newfile,使用这两个方法都会返回True,无法判断到底是文件还是目录。

3. 判断文件属性

1

2

3

4

print(os.access(newfilepath,os.F_OK))# 文件是否存在

print(os.access(newfilepath,os.R_OK))# 文件是否可读

print(os.access(newfilepath,os.W_OK))# 文件是否可以写入

print(os.access(newfilepath,os.X_OK))# 文件是否有执行权限

Out:

True
True
True
True

os.access(newfilepath,os.F_OK)也可以用于判断文件是否存在。

4. 打开文件

打开文本文件或者二进制文件可以使用 open() 方法:

1

f=open(filename, mode)

几种文件打开模式:

  • b:二进制模式
  • t:文本模式(默认)
  • r: 打开存在的文件,读操作(默认)。
  • w: 打开文件,写操作,先前文件中的内容会被删除。如果文件不存在会自动创建。
  • a: 打开文件,追加操作,不会删除先前文件中的内容。如果文件不存在会自动创建。
  • x:创建新文件,写操作,使用此模式打开存在的文件会抛出异常。
  • r+: 读、写操作,不会删除先前文件中的内容,但是会覆盖内容。
  • w+: 写、读操作,会删除先前文件中的内容。
  • a+: 追加、读操作,不会删除和覆盖先前文件中的内容。
  • x+:创建新文件,读写操作。

open()方法的默认模式为 rt 模式,也就是读文本文件。

另外需要注意filename的写法,比如文件路径是:D:\test.txt ,其中\t 可能会被转义,需要自前面加一个 r :

1

f=open(r"D:\test.txt","w")

5. 写文件

读写文件都需要先打开文件,返回一个文件对象,然后对文件对象进行读写操作。写文件需要设置写权限,比如 w、w+、a 模式。