Python: OSError: [Errno 2] No such file or directory: ''

后端 未结 3 1677
鱼传尺愫
鱼传尺愫 2020-12-05 03:08

I have a 100 lines, 3 years old python scraper that now bug. Starting lines are:

import urllib, re, os, sys, time    # line 1: import modules
os.chdir(os.pat         


        
相关标签:
3条回答
  • 2020-12-05 03:32

    I had this error because I was providing a string of arguments to subprocess.call instead of an array of arguments. To prevent this, use shlex.split:

    import shlex, subprocess
    command_line = "ls -a"
    args = shlex.split(command_line)
    p = subprocess.Popen(args)
    
    0 讨论(0)
  • 2020-12-05 03:50

    Use os.path.abspath():

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

    sys.argv[0] in your case is just a script name, no directory, so os.path.dirname() returns an empty string.

    os.path.abspath() turns that into a proper absolute path with directory name.

    0 讨论(0)
  • 2020-12-05 03:51

    Have you noticed that you don't get the error if you run

    python ./script.py
    

    instead of

    python script.py
    

    This is because sys.argv[0] will read ./script.py in the former case, which gives os.path.dirname something to work with. When you don't specify a path, sys.argv[0] reads simply script.py, and os.path.dirname cannot determine a path.

    0 讨论(0)
提交回复
热议问题