【问题标题】:Obtaining the file name component of a path获取路径的文件名组件
【发布时间】:2014-08-04 02:42:34
【问题描述】:

尝试将此 Perl 代码转换为 Python:

$path = shift;
$path =~ /.*\/(.*)/;
$filename = $1;
if (0 == length($filename)) {
    $filename = $path;  }

代码生成路径的文件名部分。例如,它为$path = foo/bar.txt 提供$filename = "bar.txt";。有问题的路径是传递给脚本的第一个参数。

我对 Perl 一无所知,上周刚刚学习了 Python,因此我遇到了问题。我的尝试是:

path = os.path.basename(sys.path.pop(0))
fil = sys.argv.pop()
if (0 == len(fil)):
    fil = path

【问题讨论】:

  • 您应该尝试对其进行编码,如果它不起作用则发布代码
  • re module documentation的哪一部分不清楚?您在使用该模块时遇到了什么困难?您是否注意到通过返回的匹配对象公开了捕获组?
  • @daouzli 我添加了我的尝试,这只是返回我的脚本的名称,而不是它正在处理的文件。
  • 不清楚你想做什么
  • @daouzli 我在我的任务中编辑

标签: python path


【解决方案1】:

您可以使用os.path.basename。唯一的问题是命令行参数来自sys.argv

import sys, os
path = sys.argv[1]
fn = os.path.basename(path)
print(fn)

【讨论】:

  • 我收到此错误 .. 文件“.git_filters/rcs-keywords.smudge”,第 81 行,在 path = sys.argv[1] IndexError: list index out of range跨度>
  • 你没有提供的路径的文件名很难找到
  • 我正在尝试获取被涂抹的 git 文件的文件名。
  • 这篇文章被自动标记为低质量,因为它只是代码。您介意通过添加一些文本来解释它是如何解决问题的吗?
  • @gung,我虽然说os.path.basename 发现basename 已经足够隐含,但我可以添加它。
猜你喜欢
  • 2011-11-16
  • 2023-03-26
  • 2012-01-21
  • 2011-01-11
  • 2015-04-22
  • 2014-07-24
  • 2012-10-25
  • 1970-01-01
相关资源
最近更新 更多