Python:OSError:[Errno 2]没有这样的文件或目录:''
Posted
技术标签:
【中文标题】Python:OSError:[Errno 2]没有这样的文件或目录:\'\'【英文标题】:Python: OSError: [Errno 2] No such file or directory: ''Python:OSError:[Errno 2]没有这样的文件或目录:'' 【发布时间】:2013-03-21 10:55:00 【问题描述】:我有一个 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: ''
我应该如何阅读此错误以及如何处理?
【问题讨论】:
【参考方案1】:使用os.path.abspath()
:
os.chdir(os.path.dirname(os.path.abspath(sys.argv[0])))
sys.argv[0]
在您的情况下 只是 一个脚本名称,没有目录,所以 os.path.dirname()
返回一个空字符串。
os.path.abspath()
将其转换为带有目录名称的正确绝对路径。
【讨论】:
可能会恢复一个旧线程,但我想补充一点,这个答案非常有趣。我在同一个文件夹中有两个脚本,相同的权限,都使用argparse
并且可以通过 CLI 执行。一个没有出现任何问题,但另一个给出了相同的错误No such file or directory
。如果我使用您的解决方案,我可以使用python foo.py
运行有问题的脚本,但不能从./foo.py
运行。我很好奇为什么会这样
@KamikazeRusher:我也会,但没有更多细节我无法帮助你。也许将其作为一个新问题发布?
无论如何,我认为我无法提供更多细节。感谢您的回复,但是我认为这件事暂时是微不足道的,还不能保证自己的问题。我只是发现有趣的是,即使在相同的情况下,您仍然可以发现这样的不一致
@KamikazeRusher:如果您得到明显不一致的结果,我会质疑情况是否相同。 有些东西在这两种情况下是不同的!【参考方案2】:
你有没有注意到运行时不会报错
python ./script.py
而不是
python script.py
这是因为在前一种情况下sys.argv[0]
将读取./script.py
,这使os.path.dirname
可以使用。不指定路径时,sys.argv[0]
仅读取为script.py
,而os.path.dirname
无法确定路径。
【讨论】:
【参考方案3】:我遇到了这个错误,因为我向subprocess.call
提供了一个参数字符串,而不是一个参数数组。为防止这种情况,请使用shlex.split
:
import shlex, subprocess
command_line = "ls -a"
args = shlex.split(command_line)
p = subprocess.Popen(args)
【讨论】:
谢谢。在 python 2.7 中是必需的,但在 python 3 中不再需要 我遇到了同样的错误,但我尝试使用 shlex.split 并将数组传递给 subprocess.popen。我想要做的是切换到新目录并在linux中的新shell。 command_to_run=shlex.split("cd .. && cd Adapter_Main && python2 client.py") subprocess.Popen(command_to_run,stdout=subprocess.PIPE) 这一切都在 python2 中,我得到了操作系统错误。没有这样的文件或目录。我已经在普通 shell 中检查了该命令,并且该命令完全正常工作。【参考方案4】:我在Ubuntu 14.04上编译android代码v4.4的时候遇到了同样的Python问题,没有这样的文件或目录。
它在我安装在库下面时结束。所以我认为它可能会在某些情况下对某人有所帮助。 python脚本认为系统中存在一些lib是理所当然的。
sudo apt install gperf
sudo apt install libxml2-utils
sudo apt install libbison-dev
【讨论】:
您的具体用例和错误与这里介绍的无关......为了解决这个问题需要安装外部库是没有意义的......请参阅接受的答案看看这里有什么问题......以上是关于Python:OSError:[Errno 2]没有这样的文件或目录:''的主要内容,如果未能解决你的问题,请参考以下文章
在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: ‘文件路径’
OSError:[Errno 2]在Django中使用python子进程时没有这样的文件或目录
用于 Traceroute 并在文件中打印输出的 Python 脚本在 Linux Mint 中显示错误(OSError: [Errno 2] No such file or directory)
OSError: [Errno 5] Raspberry PI GPS shield Python 上的输入/输出错误