web-dev-qa-db-ja.com

Python:OSError:[Errno 2]そのようなファイルまたはディレクトリはありません: ''

私は3行の100行を持っていますpython現在バグがあります。開始行は次のとおりです。

import urllib, re, os, sys, time    # line 1: import modules
os.chdir(os.path.dirname(sys.argv[0])) # line 2: all works in script's folder > relative address
# (rest of my script here!)

実行すると、

$cd /my/folder/
$python script.py

エラーが表示されます:

python script.py 
Traceback (most recent call last):
  File "script.py", line 2, in <module>
    os.chdir(os.path.dirname(sys.argv[0]))
OSError: [Errno 2] No such file or directory: ''

このエラーの読み方と対処方法

17
Hugolpz

実行してもエラーが表示されないことに気づきましたか

python ./script.py

の代わりに

python script.py

それの訳は sys.argv[0] 読むつもりです ./script.pyは前者の場合で、os.path.dirname動作するもの。パスを指定しない場合、sys.argv[0]は単にscript.py、およびos.path.dirnameはパスを決定できません。

31
zigg

引数の配列の代わりにsubprocess.callに引数の文字列を提供していたため、このエラーが発生しました。これを防ぐには、shlex.splitを使用します。

import shlex, subprocess
command_line = "ls -a"
args = shlex.split(command_line)
p = subprocess.Popen(args)
21
Moebius

os.path.abspath()を使用します。

_os.chdir(os.path.dirname(os.path.abspath(sys.argv[0])))
_

あなたの場合の_sys.argv[0]_はjustスクリプト名であり、ディレクトリがないため、os.path.dirname()は空の文字列を返します。

os.path.abspath() は、ディレクトリ名を含む適切な絶対パスに変換します。

19
Martijn Pieters