开发者

Opening a file in pwdir's folder in Python through Applescript

Opening a file available in present working directory's temp folder in python

I tried

pwdir=os.getcwd()
tempdir=pwdir+"/temp/test.txt"
f=open(tempdir,'r+')

When I print the path of tempdir, it is showing up correctly and also the contents of file are also read.

When I try to combine this operation from an Applescript, which calls this python script. I get an error like this

f=open(pwdir1,'r+')
IOError: [Errno 2] No such file or directory: '//temp/test.txt'" number 1

EDIT:

I am using Shell script from Applescript开发者_StackOverflow中文版 to call this pythonscript

do shell script "/Users/mymac/Documents/'Microsoft User Data'/test.py"

EDIT:

Python Code:

tempdir = os.path.join(os.getcwd(),'temp','htmlinput.html')
print tempdir
with open(tempdir) as f:
    html=f.read()

Python output from terminal:(works perfectly fine)

/Users/mymac/Documents/Microsoft User Data/Outlook Script Menu Items/temp/htmlinput.html

I am also able to see the file contents.

Applescript Code:

do shell script "/Users/mymac/Documents/'Microsoft User Data'/'Outlook Script Menu Items'/new.py"

Applescript Error:

error "Microsoft Outlook got an error: Traceback (most recent call last):
  File \"/Users/mymac/Documents/Microsoft User Data/Outlook Script Menu Items/new.py\", line 12, in <module>
    with open(tempdir) as f:
IOError: [Errno 2] No such file or directory: '/temp/htmlinput.html'" number 1


I don't know Applescript -- or OS X in general. It looks like the script is being run from the root folder, and os.getcwd() returns '/'. The directory of the script itself is sys.path[0] or the dirname of the current module -- dirname(__file__) -- if it's a single script instead of a package. Try one of the following

import os, sys
tempdir = os.path.join(sys.path[0], 'temp', 'temp.txt') 

or

import os
tempdir = os.path.join(os.path.dirname(__file__), 'temp', 'temp.txt')


The double slash is your problem. The right way to join file and path names in Python is with os.path.join. Try:

tempdir = os.path.join(os.getcwd(), 'temp', 'test.txt')

Also, you should probably be doing:

with open(tempdir) as f:

which will make sure tempdir gets closed even if you have an error.

Edit:

We need to see what tempdir is when the script is invoked by the AppleScript, not when it is invoked from the terminal. If you do

tempdir = os.path.join(os.getcwd(),'temp','htmlinput.html')
with open('/Users/mymac/Documents/temp.txt', 'w') as fwrite:
    fwrite.write(tempdir)

What exactly ends up in the file /Users/mymac/Documents/temp.txt?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜