Python获取文件名

在进行日常程序开发过程中,获取文件名是一个普遍的需求。本篇文章将演示如何用Python获取文件名,以及获取文件路径和拓展名。

一、使用os模块

1.1 os.listdir()方法

Python的os模块提供了一系列用于操作操作系统功能的方法。其中一个方法就是os.listdir(),它可以返回指定目录下的所有文件和文件夹的名称。我们可以利用这个方法来获取文件夹中所有文件的名称。

def get_file_name_1(file_path):
    file_names = os.listdir(file_path)
    return file_names

file_path = './data'
file_names = get_file_name_1(file_path)
print(file_names)

输出结果:

['2023-08-07_12.txt', '2023-08-07_09.txt', '2023-08-07_11.txt', '2023-08-07_10.txt', '2023-08-07_08.txt']

1.2 os.path()方法

Python的os.path模块提供了一些有用的方法来处理文件路径。我们可以使用os.path.basename()方法来获取文件的基名(即文件名加扩展名),或者使用os.path.splitext()方法来获取文件的扩展名。

def get_file_name_2(file_path):
    file_names = []
    for root, dirs, files in os.walk(file_path):
        for file in files:
            file_names.append(os.path.basename(file))
    return file_names

file_path = './data'
file_names = get_file_name_1(file_path)
print(file_names)

输出结果:

['2023-08-07_12.txt', '2023-08-07_09.txt', '2023-08-07_11.txt', '2023-08-07_10.txt', '2023-08-07_08.txt']

这里,补充一些关于os.path模块在处理文件方面的基本使用方法:

import os

path = '/home/user/documents/file.txt'

# os.path.basename()获取文件名
filename = os.path.basename(path) 
print(filename)  # 输出 "file.txt"

# os.path.dirname()获取文件路径
directory = os.path.dirname(path)
print(directory)  # 输出 "/home/user/documents"

# os.path.splitext()获取文件名和拓展名
filename_without_ext, file_extension = os.path.splitext(filename)
print(filename_without_ext)  # 输出 "file"
print(file_extension)  # 输出 ".txt"

二、使用Pathlib模块

Pathlib是Python3.4以上版本中自带的模块,用于处理文件路径。它提供了易于使用的面向对象的接口,可以轻松获取文件名,路径和拓展名。

from pathlib import Path

path = Path('/home/user/documents/file.txt')

# Path.name获取文件名
filename = path.name
print(filename)  # 输出 "file.txt"

# Path.parent获取文件路径
directory = path.parent
print(directory)  # 输出 "/home/user/documents"

# Path.suffix获取拓展名
file_extension = path.suffix
print(file_extension)  # 输出 ".txt"

# Path.stem获取文件名不带拓展名
filename_without_ext = path.stem
print(filename_without_ext)  # 输出 "file"

三、使用正则表达式获取文件名

如果文件名不在文件路径的末尾,可以使用正则表达式来提取文件名。

import re

path = '/home/user/documents/file.txt'

# 使用正则表达式获取文件名
filename = re.findall(r'/([^/]+)\.txt', path)[0]
print(filename)  # 输出 "file"

结论

以上是三种获取文件名的方法,使用os模块和Pathlib模块可以更加简洁方便地获取文件名、路径和拓展名,而使用正则表达式可以灵活处理较为复杂的文件路径。在编写Python程序时,可以根据实际情况选择最合适的方法。

参考资料

  • Python获取文件名

你可能感兴趣的:(Python,python,java,服务器)