absolute path to a file
Thank you Manfred and Cameron!
I think the problem may lie within syntax rather than vocabulary. The
code works in one place but not where I use it in my script*. Cameron?s
suggestion works when I try
BUT does not work with
This returns only
Here is my full script:
||from pathlib import Path ||
||texture_list = ||
||with open(os.path.splitext(bpy.data.filepath) + ".txt", "w") as
||?for obj in bpy.context.scene.objects:||
||??? for s in obj.material_slots:||
||??????? if s.material and s.material.use_nodes:||
||??????????? for n in s.material.node_tree.nodes:||
||??????????????? if n.type == 'TEX_IMAGE':||
||??????????????????? texture_list += [n.image]||
||print(obj.name,'uses',n.image.name,'saved at',n.image.filepath, 'which
is at', os.path.realpath(n.image.filepath), file=outstream)||
Chris, I only mention the extra leading slash on my Mac in case anyone
wonders why it is there. Python puts it there to escape the following slash.
Perhaps I should also mention (in case it is relevant) that I am calling
my script ?texturescript.py? from the Python console of Blender. I use:
|filename = "/Users/Lion/Desktop/test8/texturescript.py"||
||exec(compile(open(filename).read(), filename, 'exec'))|
* My original |os.path.abspath| also works (and doesn?t work) in these
circumstances. As does Manfred?s: |Path('./myfile').resolve()|.
On 16/08/2019 05:44, Manfred Lotz wrote:
> On Fri, 16 Aug 2019 09:00:38 +1000
> Cameron Simpson <cs at cskk.id.au> wrote:
>> On 15Aug2019 22:52, Manfred Lotz <ml_news at posteo.de> wrote:
>>> I did this:
>> >from pathlib import Path
>>> abs_myfile = Path('./myfile').resolve()
>>> which worked fine for me.
>> There is also os.path.realpath(filename) for this purpose. In modern
>> Python that also accepts a Pathlike object.
> Thanks for this.
> I changed my code to use your suggestion which seems to
> be better for the situation where I used resolve() before.
Paul St George
+44(0)7595 37 1302