2014-06-13 224 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