私は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: ''
このエラーの読み方と対処方法
実行してもエラーが表示されないことに気づきましたか
python ./script.py
の代わりに
python script.py
それの訳は sys.argv[0]
読むつもりです ./script.py
は前者の場合で、os.path.dirname
動作するもの。パスを指定しない場合、sys.argv[0]
は単にscript.py
、およびos.path.dirname
はパスを決定できません。
引数の配列の代わりにsubprocess.call
に引数の文字列を提供していたため、このエラーが発生しました。これを防ぐには、shlex.split
を使用します。
import shlex, subprocess
command_line = "ls -a"
args = shlex.split(command_line)
p = subprocess.Popen(args)
os.path.abspath()
を使用します。
_os.chdir(os.path.dirname(os.path.abspath(sys.argv[0])))
_
あなたの場合の_sys.argv[0]
_はjustスクリプト名であり、ディレクトリがないため、os.path.dirname()
は空の文字列を返します。
os.path.abspath()
は、ディレクトリ名を含む適切な絶対パスに変換します。