从字符串中提取路径和文件名的最有效方法

3

我是Python的新手,想知道Python最好的处理以下问题的方法:

file='/var/log/test.txt'
==action==

在 ==action== 之后,我希望能够将路径和文件分开,例如:
path='/var/log'
file_name='test.txt'

我不是在问如何做到这一点,而是在问使用最少的代码行数来实现这一点的最有效方法。

=编辑=

如果我的文件为'test.txt'而不是文件='/var/log/test.txt'。我更可能期望:

path='.'
path='test.txt'

除了
path=''
file_name='test.txt'

这句话的意思是什么呢?

关于你的新问题:path == ""有什么问题吗?你说它不是你期望的,但这本身并不是一个问题。 - Sven Marnach
@SvenMarnach,我只是想知道除了执行“if not path”检查之外是否还有其他现成的方法。但看起来在我的情况下需要执行“if not path”检查。谢谢。 - Shengjie
我的观点是,没有必要将空目录名转换为显式的“.”。在我能想象到的任何情况下,都可以使用空字符串,因此我不认为需要额外的代码。 - Sven Marnach
@SvenMarnach,如果你试图执行os.dir(path),那么这就不行了。在这种情况下,空字符串是不起作用的。 - Shengjie
1
你可能是指 os.listdir(path);你是对的,在这种情况下一个空字符串似乎不起作用,(尽管我认为它应该起作用)。 - Sven Marnach
@SvenMarnach 是的,我是指os.listdir(path),但非常感谢讨论 :) - Shengjie
2个回答

11
file = '/var/log/test.txt'
path, file_name = os.path.split(file)

得到:

path
'/var/log'

file_name
'test.txt'

要使用os.path.split(),需要import os。我认为Python库已经尽可能地高效了。

回应更新/编辑,如果没有指定路径并且想要.用于路径,请添加:

if not path: path = '.'

也就是说,

file = 'test.txt'
path, file_name = os.path.split(file)
if not path: path = '.'
抱歉,我只能理解并回答英文问题。请您提供英文文本,我将尽力回答您的问题。
path
'.'

file_name
'test.txt'

7
你应该查看 os.path文档,其中有一个 split 函数,例如:
path, file_name = os.path.split('/var/log/test/txt')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接