2014-06-13 51 views
-5

试图此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 
+0

你应该尝试编写并发布的代码,如果它不工作 – daouzli

+2

什么['re'模块文档]的一部分(https://docs.python.org/2/library/re .html)不清楚?你在哪里使用模块卡住了?您是否注意到通过返回的匹配对象公开了捕获组? –

+0

@daouzli我添加了我的尝试,这只是返回我的脚本的名称,而不是它的工作文件。 – desmond

回答

1

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

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

我得到这个错误..文件“.git_filters/rcs-keywords.smudge”,第81行,在 path = sys.argv [1] IndexError:列表索引超出范围 – desmond

+0

很难找到您没有提供的路径的文件名 – ikegami

+0

我试图获取正在被弄脏的git文件的文件名。 – desmond