Python从终端执行时不编译,但在从原子编辑器运行时编译

时间:2017-03-20 05:56:36

标签: python atom-editor

我正在运行此代码:

import os

file_path = os.path.dirname(__file__)
print file_path

accel = open(os.path.dirname(__file__) + '/../imu/accel.txt')

首先,我使用'脚本'从我的原子编辑器运行它。包装并输出:

enter image description here

但是当我从终端运行相同的代码时,我得到了:

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语句没有打印任何内容。问题从那里开始。

1 个答案:

答案 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是正确的。但这并不是导致错误的原因。