Python:OSError:[Errno 2]没有这样的文件或目录:''

2024-05-11 09:45:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个100行,3年前的python scraper,现在bug。起跑线是:

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: ''

我应该如何读取此错误以及如何操作?


Tags: pathinpyimportosmy错误sys
3条回答

你是否注意到如果你运行

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]在您的例子中是只是一个脚本名,没有目录,所以os.path.dirname()返回一个空字符串。

^{}将其转换为具有目录名的正确绝对路径。

相关问题 更多 >