我正在运行此代码:
import os
file_path = os.path.dirname(__file__)
print file_path
accel = open(os.path.dirname(__file__) + '/../imu/accel.txt')
首先,我使用'脚本'从我的原子编辑器运行它。包装并输出:
但是当我从终端运行相同的代码时,我得到了:
Traceback (most recent call last):
File "imu_pub2.py", line 9, in <module>
accel = open(os.path.dirname(__file__) + '/../imu/accel.txt')
IOError: [Errno 2] No such file or directory: '/../imu/accel.txt'
为什么会这样?
编译错误发生在代码的最后一行。由于某些原因,终端中的print语句没有打印任何内容。问题从那里开始。
答案 0 :(得分:0)
将os.path.dirname(__file__)
更改为os.path.dirname(os.path.abspath(__file__))
问题是当您将脚本作为python imu_pub2.py
运行时,__file__
变量设置为&#34; imu_pub2.py&#34;。该字符串只是一个没有目录部分的文件名,因此dirname(__file__)
生成一个空字符串。这意味着file_path
是一个空字符串,这就是为什么当你print
时没有出现的原因。由于dirname
的结果为空,accel
设置为&#34; /../ imu / accel.txt&#34;并且显然您的计算机上不存在此类文件,因此open
失败。
使用abspath
将获取__file__
的完整目录路径,这将让dirname
生成您想要的结果。
顺便说一下,当kra3说使用os.path.join
而不是将字符串连接在一起时,kra3是正确的。但这并不是导致错误的原因。