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

问题描述 投票:0回答:5

我有一个 100 行的 3 年前的 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 python-2.7 python-module
5个回答
34
投票

你有没有注意到如果你运行你不会得到错误

python ./script.py

代替

python script.py

这是因为

sys.argv[0]
在前一种情况下会读作
./script.py
,这给了
os.path.dirname
一些可以使用的东西。当您不指定路径时,
sys.argv[0]
只读为
script.py
,而
os.path.dirname
无法确定路径。


30
投票

我有这个错误是因为我向

subprocess.call
提供了一个参数字符串而不是一个参数数组。为防止这种情况,请使用
shlex.split

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

19
投票

使用

os.path.abspath()

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

sys.argv[0]
在你的情况下是 just 一个脚本名称,没有目录,所以
os.path.dirname()
返回一个空字符串。

os.path.abspath()
将其转换为具有目录名称的正确绝对路径。


0
投票

尝试使用 otatools 命令:m -j otatools 它适用于我的情况。

运行命令 m -j otatools 启动构建过程,为从 AOSP 源代码构建的 Android ROM 创建 OTA 更新包。


-1
投票

我在Ubuntu 14.04上编译android代码v4.4,遇到Python同样的问题,没有那个文件或目录。

它在我安装下面的库时结束。所以我想也许它会在某些场合对某人有所帮助。 python脚本理所当然地认为系统中存在一些lib。

sudo apt install gperf
sudo apt install  libxml2-utils
sudo apt install libbison-dev

© www.soinside.com 2019 - 2024. All rights reserved.