Vas*_*ily 55 python directory python-3.x
在Python中,我应该使用什么命令来获取包含我正在使用的文件的文件夹的名称?
"C:\folder1\folder2\filename.xml"
这"folder2"是我想要的.
我唯一想到的就是使用os.path.split两次:
folderName = os.path.split(os.path.split("C:\folder1\folder2\filename.xml")[0])[1]
有没有更好的方法呢?
fed*_*qui 110
你可以使用dirname:
Run Code Online (Sandbox Code Playgroud)os.path.dirname(path)返回路径名路径的目录名称.这是通过将路径传递给函数split()返回的对中的第一个元素.
并且给定完整路径,然后您可以正常拆分以获得路径的最后部分.例如,通过使用basename:
Run Code Online (Sandbox Code Playgroud)os.path.basename(path)返回路径名路径的基本名称.这是通过将路径传递给函数split()返回的对的第二个元素.请注意,此函数的结果与Unix basename程序不同; 其中'/ foo/bar /'的basename返回'bar',basename()函数返回一个空字符串('').
全部一起:
>>> import os
>>> path=os.path.dirname("C:/folder1/folder2/filename.xml")
>>> path
'C:/folder1/folder2'
>>> os.path.basename(path)
'folder2'
dfr*_*h22 13
这已经很老了,但是如果您使用的是 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)
idj*_*jaw 12
您正在寻找使用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]
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'
小智 5
你可以使用pathlib
from pathlib import Path
Path(r"C:\folder1\folder2\filename.xml").parts[-2]
上面的输出是这样的:
'folder2'
| 归档时间: | 
 | 
| 查看次数: | 95034 次 | 
| 最近记录: |