在Python程序中,查找文件路径是一个常见的操作。无论是读取文件还是写入文件,都需要知道文件的路径。在本文中,我们将从多个角度分析Python查找文件路径的方法。
一、使用os模块
os模块是Python标准库中的一个模块,它提供了许多与操作系统相关的函数和变量。其中,os.path模块提供了一些用于处理文件路径的函数。
1. os.path.abspath(path)
该函数返回path的绝对路径。
例如:
```
import os
path = 'file.txt'
print(os.path.abspath(path))
```
输出结果为:
```
C:\Users\Username\Documents\file.txt
```
2. os.path.basename(path)
该函数返回path的基本名称。也就是说,它返回path中的最后一个路径分隔符后的部分。
例如:
```
import os
path = 'C:\\Users\\Username\\Documents\\file.txt'
print(os.path.basename(path))
```
输出结果为:
```
file.txt
```
3. os.path.dirname(path)
该函数返回path的目录名称。也就是说,它返回path中的最后一个路径分隔符前的部分。
例如:
```
import os
path = 'C:\\Users\\Username\\Documents\\file.txt'
print(os.path.dirname(path))
```
输出结果为:
```
C:\Users\Username\Documents
```
4. os.path.join(path1, path2, ...)
该函数将多个路径组合成一个路径。它会根据操作系统的不同,在路径中自动添加路径分隔符。
例如:
```
import os
path1 = 'C:\\Users\\Username\\Documents'
path2 = 'file.txt'
print(os.path.join(path1, path2))
```
输出结果为:
```
C:\Users\Username\Documents\file.txt
```
5. os.path.split(path)
该函数将path分割成目录和文件名两个部分,返回一个元组。
例如:
```
import os
path = 'C:\\Users\\Username\\Documents\\file.txt'
print(os.path.split(path))
```
输出结果为:
```
('C:\\Users\\Username\\Documents', 'file.txt')
```
6. os.path.splitext(path)
该函数将path分割成文件名和扩展名两个部分,返回一个元组。
例如:
```
import os
path = 'C:\\Users\\Username\\Documents\\file.txt'
print(os.path.splitext(path))
```
输出结果为:
```
('C:\\Users\\Username\\Documents\\file', '.txt')
```
二、使用pathlib模块
Python 3.4引入了pathlib模块,它提供了一种更面向对象的方式来处理文件路径。
1. pathlib.Path(path)
该类用于表示文件路径。它的构造函数可以接受一个字符串参数,表示文件路径。
例如:
```
from pathlib import Path
path = Path('C:/Users/Username/Documents/file.txt')
```
2. path.absolute()
该方法返回path的绝对路径。
例如:
```
from pathlib import Path
path = Path('file.txt')
print(path.absolute())
```
输出结果为:
```
C:\Users\Username\Documents\file.txt
```
3. path.name
该属性返回path的基本名称。
例如:
```
from pathlib import Path
path = Path('C:/Users/Username/Documents/file.txt')
print(path.name)
```
输出结果为:
```
file.txt
```
4. path.parent
该属性返回path的目录名称。
例如:
```
from pathlib import Path
path = Path('C:/Users/Username/Documents/file.txt')
print(path.parent)
```
输出结果为:
```
C:\Users\Username\Documents
```
5. path.joinpath(*paths)
该方法将多个路径组合成一个路径。
例如:
```
from pathlib import Path
path1 = Path('C:/Users/Username/Documents')
path2 = 'file.txt'
print(path1.joinpath(path2))
```
输出结果为:
```
C:\Users\Username\Documents\file.txt
```
6. path.parts
该属性返回path的各个部分,以元组的形式表示。
例如:
```
from pathlib import Path
path = Path('C:/Users/Username/Documents/file.txt')
print(path.parts)
```
输出结果为:
```
('C:\\', 'Users', 'Username', 'Documents', 'file.txt')
```
三、使用glob模块
glob模块提供了一种模式匹配文件路径的方法。
1. glob.glob(pathname)
该函数返回与pathname匹配的所有文件路径,以列表的形式表示。
例如:
```
import glob
files = glob.glob('C:/Users/Username/Documents/*.txt')
print(files)
```
输出结果为:
```
['C:/Users/Username/Documents/file1.txt', 'C:/Users/Username/Documents/file2.txt']
```
四、使用os.walk函数
os.walk函数可以遍历某个目录下的所有文件和子目录。
1. os.walk(top, topdown=True, onerror=None, followlinks=False)
该函数返回一个生成器,它可以遍历top目录下的所有文件和子目录。top是要遍历的目录的路径。
例如:
```
import os
for root, dirs, files in os.walk('C:/Users/Username/Documents'):
for file in files:
print(os.path.join(root, file))
```
输出结果为:
```
C:/Users/Username/Documents/file1.txt
C:/Users/Username/Documents/file2.txt
```