# bpy.context.space_data.text throwing error from command line

I'm new to Blender and Python, but have programming experience.

I'm writing a script that iterates through all the .stl files in the current directory (current being where the script is), does a few things, then exports them as .fbx files.

When running it from the Scripting screen in Blender, it works great, but I want to run it from the command line.

When I do that it hits an error on this line that grabs the directory where the script resides:

workDir = os.path.dirname(bpy.context.space_data.text.filepath)


The error is:

AttributeError: 'NoneType' object has no attribute 'text'

Why does this work via the GUI and not the command line? Is there a different command I should be using?

Thanks

• When you run from the text editor, the context.space_data.type is 'TEXT_EDITOR' ie it is the context space. When you run from CL the context space is None, hence your error. What about something like bpy.path.abspath(bpy.data.texts['Text'].filepath) However prob better blender.stackexchange.com/questions/6817/… and pass the path via a command line argument. – batFINGER May 17 '16 at 15:52
• bpy.path.abspath(bpy.data.texts['Text'].filepath) gives me the error: "KeyError: 'bpy_prop_collection[key]: key "Text" not found'" Passing it as a command line arg may be what I do, but I'd hoped to be able to use the script from the command line or the gui. – Ryan Ashley May 19 '16 at 14:17
• "Text" needs to be the name of your text block. Passing the path via the command line would be a better solution AFAIC than having the script in same folder as stl files and also having script opened in blender text editor. – batFINGER May 19 '16 at 14:19

In the text editor window the [filepath] refers to file location where you save the script. In the console window there is no such structure.

import bpy
import datetime

print(datetime.datetime.today())
print(bpy.context.space_data.text.filepath)
print(bpy.data.filepath)


The above was executed in the Script window. You can compare the results.

• bpy.data.filepath gives me no output either in the GUI or via command line. – Ryan Ashley May 19 '16 at 14:19
• The file needs to be saved to have a bpy.data.filepath – batFINGER Feb 15 '17 at 5:17