2016-04-30 12 views
0

パスをコマンドラインパラメータとして指定する際に問題があります。私はWindows上で動作しています。pythonのコマンドラインパラメータとしてディレクトリパスを指定する2.7

コード:

import sys 
import os 

startPath = sys.argv[1] 
print startPath 
print os.path.dirname(startPath) 

コマンドラインパラメータ:

C:\Users\username\Documents\python scripts\New folder 

出力:

C:\Users\username\Documents\python scripts\New folder 

C:\Users\username\Documents\python scripts 

私の問題:

ので、パスの最後の部分(\New folder)がディレクトリ名で失われています。

私は間違っていますか?

答えて

1

あなたは二重引用符で、パス、すなわち、コマンドラインパラメータを配置する必要があります。

python myscript.py "C:\Users\username\Documents\python scripts\New folder" 
+0

引用符を付けないと、出力は 'C:\ Users \ username \ Documents \ python'と' C:\ Users \ username \ Documents'になります。 – eryksun

2

末尾に\を入力するか、存在しない場合はコードに追加する必要があります。そうでない場合、os.path.dirnameはファイル名としてNew folderを扱います。

+0

私は、これはXYZが何を望んでいたとしますが、引数がディレクトリへのパスである場合は、する理由はありません'os.path.dirname'を使い、末尾にスラッシュを必要とするのは脆弱です。 'os.path.abspath'を使って完全修飾パスとして正規化し、' os.path.isdir'を使ってディレクトリであることを確認してください。 – eryksun

関連する問題