在Python中获取当前目录而不是完整路径

6

如果这是一个已经解决的问题,我很抱歉。我想在运行Python脚本或在Python中获取当前目录。以下内容将返回包括当前目录在内的完整路径:

os.getcwd()

我也可以获取到当前目录的完整路径:

os.path.dirname(os.getcwd())

使用os.path.split会返回与上述相同的内容,再加上当前文件夹,但最终我得到的是一个我想要的对象:
(thing_I_dont_want, thing_I_want) = os.path.split(os.getcwd())

有没有办法只获取我想要的东西 - 当前文件夹,而不创建任何我不需要的对象?或者,有什么可以替换变量thing_I_dont_want以防止它被创建(例如(*, thing_I_want))?
谢谢!
4个回答

9

像这样:

os.path.split(os.getcwd())[1]

尽管os.path.split返回一个元组,但您无需解包它。您可以直接选择所需的项目并忽略不需要的项目。

我不知道为什么之前没有想到这个。我知道有一个简单的解决方案。是时候再喝点咖啡了。 - trynthink

4

使用os.path.split

>>> os.path.split(os.getcwd())
('/home/user', 'py')
>>> os.path.split(os.getcwd())[-1]
'py'

os.path.split帮助文档:

>>> print os.path.split.__doc__
Split a pathname.  Returns tuple "(head, tail)" where "tail" is
    everything after the final slash.  Either part may be empty.

是的,这确实返回了我要找的对象(在你的例子中是'py'),但也返回了路径的其余部分。编辑 - 添加[-1]可以解决这个问题。 - trynthink
我可能错了,但是我认为像那样严格指定分割字符不如使用os.path.split稳健,因为os.path会在任何平台上适当地运行。 - trynthink
@trynthink 啊!我忘了Windows使用\,我会删除那个注释。 - Ashwini Chaudhary
@DavidHeffernan 但这对于未来看到此答案的人来说是一个很好的参考。 - Ashwini Chaudhary

1
你可以尝试这个方法,但如果路径名以斜杠 / 结尾,这种方法并不安全(与所有给定的解决方案一样):
os.path.basename(os.getcwd())

0

在Python中,表示“我不想要这个东西”的标准方式是将其称为_,例如:

_, thing_I_want = os.path.split(os.getcwd())

请注意,这并没有做任何特殊的事情。对象是在os.split()内部创建的,它仍然被返回并赋予名称_ - 但这确实让阅读您代码的人明白您不关心该特定元素。
除了向其他人发出信号外,大多数IDE和代码验证器都将理解名为_的变量应该被忽略,并且他们不会警告您从未使用过它之类的事情。

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