在Python中,我应该使用哪个命令来获取包含正在使用的文件的文件夹的名称?
"C:\folder1\folder2\filename.xml"
这"folder2"
就是我想要得到的。
我唯一想出的就是使用os.path.split
两次:
folderName = os.path.split(os.path.split("C:\folder1\folder2\filename.xml")[0])[1]
有什么更好的方法吗?
Answers:
您可以使用dirname
:
os.path.dirname(path)
返回路径名path的目录名。这是通过将路径传递给函数split()返回的对中的第一个元素。
给定完整路径,然后您可以正常拆分以获取路径的最后一部分。例如,通过使用basename
:
os.path.basename(path)
返回路径名path的基本名称。这是通过将路径传递给函数split()返回的对中的第二个元素。请注意,此函数的结果与Unix basename程序不同。'/ foo / bar /'的基本名称返回'bar',而basename()函数返回一个空字符串('')。
全部一起:
>>> import os
>>> path=os.path.dirname("C:/folder1/folder2/filename.xml")
>>> path
'C:/folder1/folder2'
>>> os.path.basename(path)
'folder2'
os.path.basename
您正在寻找使用dirname。如果只需要一个目录,则可以使用os.path.basename,
当放在一起时,它看起来像这样:
os.path.basename(os.path.dirname('dir/sub_dir/other_sub_dir/file_name.txt'))
那应该让你“ other_sub_dir”
以下不是理想的方法,但我最初是使用os.path.split提出的,只是获得了最后一项。看起来像这样:
os.path.split(os.path.dirname('dir/sub_dir/other_sub_dir/file_name.txt'))[-1]
str.split
最好不要使用进行拆分(最好使用它(可以更好地os.path.split
处理不同操作系统的差异))。
这已经很老了,但是如果您使用的是Python 3.4或更高版本,请使用PathLib。
# using OS
import os
path=os.path.dirname("C:/folder1/folder2/filename.xml")
print(path)
print(os.path.basename(path))
# using pathlib
import pathlib
path = pathlib.PurePath("C:/folder1/folder2/filename.xml")
print(path.parent)
print(path.parent.name)
os.path.dirname
您正在寻找的是-
os.path.dirname(r"C:\folder1\folder2\filename.xml")
确保r
在字符串之前加上前缀,以便将其视为原始字符串。
演示-
In [46]: os.path.dirname(r"C:\folder1\folder2\filename.xml")
Out[46]: 'C:\\folder1\\folder2'
如果您只需要folder2
,则可以将os.path.basename
其与上面的示例一起使用-
os.path.basename(os.path.dirname(r"C:\folder1\folder2\filename.xml"))
演示-
In [48]: os.path.basename(os.path.dirname(r"C:\folder1\folder2\filename.xml"))
Out[48]: 'folder2'
您可以将完整路径作为字符串获取,然后使用操作系统的分隔符将其分成列表。然后,您可以使用负索引从列表末尾访问元素,从而获得程序名称,文件夹名称等。
像这样:
import os
strPath = os.path.realpath(__file__)
print( f"Full Path :{strPath}" )
nmFolders = strPath.split( os.path.sep )
print( "List of Folders:", nmFolders )
print( f"Program Name :{nmFolders[-1]}" )
print( f"Folder Name :{nmFolders[-2]}" )
print( f"Folder Parent:{nmFolders[-3]}" )
上面的输出是这样的:
Full Path :C:\Users\terry\Documents\apps\environments\dev\app_02\app_02.py
List of Folders: ['C:', 'Users', 'terry', 'Documents', 'apps', 'environments', 'dev', 'app_02', 'app_02.py']
Program Name :app_02.py
Folder Name :app_02
Folder Parent:dev