引数として送信されたファイルパスの解析に問題があります:
私が入力した場合:
os.path.normpath('D:\Data2\090925')
私は得る
'D:\\Data2\x0090925'
明らかに、フォルダー名の \0 はフォーマットを混乱させています。次の方法で修正できます。
os.path.normpath(r'D:\Data2\090925')
を与える
'D:\\Data2\\090925'
私の問題は、sys.argv で同じ結果を得るにはどうすればよいですか? すなわち:
os.path.normpath(sys.argv[1])
sys.argv を raw モードで os.path.normpath() にフィードして、フォルダーがゼロで始まる問題を回避する方法が見つかりません!
また、スクリプトにpython script.py D:/Data2/090925
.それを避けます。
補足する UPDATE1: スクリプト test.py を使用する場合:
import os, sys
if __name__ == '__main__':
print 'arg 1: ',sys.argv[1]
print 'arg 1 (normpath): ',os.path.normpath(sys.argv[1])
print 'os.path.dirname :', os.path.dirname(os.path.normpath(sys.argv[1]))
私は以下を取得します:
C:\Python>python test.py D:\Data2\091002\
arg 1: D:\Data2\091002\
arg 1 (normpath): D:\Data2\091002
os.path.dirname : D:\Data2
例: 091002 を失いました...
UPDATE2 : 以下のコメントで通知されたように、normpath が削除されたときに私が示した例で問題が解決されました。
import os, sys
if __name__ == '__main__':
print 'arg 1: ',sys.argv[1]
print 'os.path.dirname :', os.path.dirname(sys.argv[1])
print 'os.path.split(sys.argv[1])):', os.path.split(sys.argv[1])
これにより、次のことが得られます。
C:\Python>python test.py D:\Data2\091002\
arg 1: D:\Data2\091002\
os.path.dirname : D:\Data2\091002
os.path.split : ('D:\\Data2\\090925', '')
D:\Data2\091002 を使用する場合:
C:\Python>python test.py D:\Data2\091002
arg 1: D:\Data2\091002
os.path.dirname : D:\Data2
os.path.split : ('D:\\Data2', '090925')
これは私が扱うことができるものです: ありがとう!