创建一个变量,文件名。假设它有一个三个字母的扩展名,并使用切片操作,找到扩展名。对于 README.txt,扩展名应该是 txt。使用切片操作编写代码,将给出没有扩展名的名称。您的代码是否适用于任意长度的文件名?
您的代码是:
filename = "readme.txt"
extension = filename[-3:]
print("The extension is", extension)
name = filename[:len(filename)-4]
print("The name without extension is", name)
在 Python 中,有不同的方法可以创建一个变量并找到文件名的扩展名。一种方法是使用 os.path 模块,它提供了一个名为 splitext() 的函数,它可以将文件路径分割为文件名和文件扩展名。另一种方法是使用 pathlib 模块,它有一个 Path 类,它有一个 suffix 属性,可以用来获取文件扩展名。这里有一些使用这些方法的代码示例:
使用 os.path.splitext():
import os
filename = "README.txt" # 创建一个变量,包含文件名
name, extension = os.path.splitext(filename) # 分割文件名和扩展名
print("The extension is", extension) # 打印扩展名
print("The name without extension is", name) # 打印没有扩展名的名称
使用 pathlib.Path().suffix:
from pathlib import Path
filename = "README.txt" # 创建一个变量,包含文件名
file_path = Path(filename) # 创建一个 Path 对象
extension = file_path.suffix # 获取扩展名
print("The extension is", extension) # 打印扩展名
name = file_path.stem # 获取没有扩展名的名称
print("The name without extension is", name) # 打印没有扩展名的名称
这两种方法都适用于任意长度的文件名,只要它们有一个点(.)分隔文件名和扩展名。如果文件名没有点,或者有多个点,结果可能会根据使用的方法而不同。例如,如果文件名是 “.bashrc”,os.path.splitext() 方法会返回 (“.bashrc”, “”) 作为文件名和扩展名,而 pathlib.Path().suffix 方法会返回 “” 作为扩展名。类似地,如果文件名是 “foo.bar.tar.gz”,os.path.splitext() 方法会返回 (“foo.bar.tar”, “.gz”) 作为文件名和扩展名,而 pathlib.Path().suffix 方法会返回 “.gz” 作为扩展名。如果你想获取一个有多个点的文件名中的所有扩展名,你可以使用 pathlib.Path().suffixes 属性,它会返回一个扩展名的列表。例如,pathlib.Path(“foo.bar.tar.gz”).suffixes 会返回 [“.bar”, “.tar”, “.gz”]。