我有一个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: ''
我应该如何读取此错误以及如何操作?
你是否注意到如果你运行
而不是
这是因为在前一种情况下,
sys.argv[0]
将读取./script.py
,这就给了os.path.dirname
一些有用的东西。如果不指定路径,sys.argv[0]
只读取script.py
,而os.path.dirname
无法确定路径。我犯了这个错误,因为我给
subprocess.call
提供了一个参数字符串,而不是一个参数数组。要防止这种情况,请使用shlex.split
:使用
os.path.abspath()
:sys.argv[0]
在您的例子中是只是一个脚本名,没有目录,所以os.path.dirname()
返回一个空字符串。^{} 将其转换为具有目录名的正确绝对路径。
相关问题 更多 >
编程相关推荐