在Python中,我应该使用什么命令来获取包含我正在处理的文件的文件夹的名称?"C:\folder1\folder2\filename.xml"
这里"folder2"
是我想得到的。
我唯一想到的是使用os.path.split
两次:
folderName = os.path.split(os.path.split("C:\folder1\folder2\filename.xml")[0])[1]
有没有更好的办法?
在Python中,我应该使用什么命令来获取包含我正在处理的文件的文件夹的名称?"C:\folder1\folder2\filename.xml"
这里"folder2"
是我想得到的。
我唯一想到的是使用os.path.split
两次:
folderName = os.path.split(os.path.split("C:\folder1\folder2\filename.xml")[0])[1]
有没有更好的办法?
8条答案
按热度按时间j8ag8udp1#
您可以使用
dirname
:返回路径名path的目录名。这是通过将path传递给函数split()返回的对的第一个元素。
给定完整路径后,可以正常拆分以获取路径的最后一部分。例如,使用
basename
:返回路径名path的基本名称。这是通过将path传递给函数split()返回的对的第二个元素。注意,此函数的结果与Unix basename程序不同;其中basename for '/foo/bar/'返回'bar',basename()函数返回空字符串('')。
合计:
bfrts1fy2#
您希望使用dirname。如果您只需要一个目录,您可以使用os.path.basename,
当把所有这些放在一起时,它看起来像这样:
这应该会得到“其他子目录”
下面的方法并不理想,但我最初提出,使用os.path.split,并简单地获取最后一项。它看起来像这样:
ncecgwcz3#
这是相当古老的,但如果你使用Python 3.4或更高版本,请使用PathLib。
qgzx9mmu4#
os.path.dirname
是您正在寻找的-确保将
r
添加到字符串前面,以便将其视为原始字符串。演示-
如果您只需要
folder2
,则可以将os.path.basename
与上述内容配合使用,例如-演示-
ttisahbt5#
您可以使用路径库
以上的输出如下:
wkyowqbh6#
你可以把完整的路径作为一个字符串,然后用你的操作系统的分隔符把它分割成一个列表,然后用负索引从列表末尾访问元素,得到程序名,文件夹名等。
就像这样:
以上的输出如下:
8mmmxcuj7#
我对可用的解决方案进行了改进,即与所有的一起工作的片段,
1.文件
1.带有培训斜杠的目录
1.不带培训斜杠的目录
我的解决办法是,
解释
Path(s)
-使用s
创建自定义Path对象,但不解析它。.with_name("foo")
-向路径中添加一个伪文件foo
.parts[-2]
返回字符串的倒数第二部分。-1
部分将为foo
tcbh2hod8#
我用两种方法得到同样的回答:其中一个用途:
由于我在脚本中发现错误,我更改为:
由于python
'\\'
,这是一种变通方法